java - 以编程方式从 Eclipse 捕获编译器错误

标签 java eclipse extract

我正在尝试编写一个程序,它可以从 Eclipse 的“问题” View 中提取所有编译器错误(或其他类似错误的构建路径)。

我还没有找到任何关于如何做到这一点的文档。

最佳答案

我为您提供了三种可能的解决方案:

不要使用 Eclipse

这是最简单的方法。 Eclipse 正在生成构建错误的可视化表示,而您需要结构化的表示,因此它们不匹配。

另一方面,如果您只是从命令行运行 javac,输出很容易捕获,并且相对容易在那里解析。如果您需要更精确地解析错误,请查看运行 JavaCompiler在您的代码中并为其提供自定义 DiagnosticListener

如果捕获 Eclipse 编译器的一些细微差别很重要,您甚至可以从命令行(以批处理模式)运行它。这里有一篇很好的博客文章描述了这个过程:ECJ - Eclipse Compiler for Java .这是简短版本:在您的 Eclipse 发行版中找到 ECJ jar(我的在 plugins/org.eclipse.jdt.core_3.8.3.v20130121-145325.jar)并在命令行上运行它

java -jar <ecj.jar> <sourcefiles>

当然,您也可以从 Java 中运行它以获得更好的控制。


使用 GUI 自动化获取错误

这会很笨拙,但对于测试场景可能很有用,在这种情况下您希望自动测试人员验证 Eclipse 项目是否按照您期望的方式构建。

您可以使用 AutoHotKey 或 Sikuli 或 AWT Robot 等工具来自动获取错误。我能想到的最简单的例程是这样的:

  1. 单击“问题”选项卡将其置于最前面
  2. 点击“错误”顶级节点,选择它
  3. 键入要复制的热键;所有错误都将复制到剪贴板,每行一个
  4. 粘贴或以其他方式将剪贴板转储到文件中
  5. 对您要捕获的任何其他类别重复 2-4,例如“警告”

重写Eclipse插件

最后,如果您真正需要的是某种对用户透明的错误消息的实时捕获,那么您就只能这样做了。

您需要进入 Eclipse 源代码,可能是“问题” View 的定义,并修改它以传递您的代码信息。那么任何需要它的人都必须使用您定制的 Eclipse 版本,而不是标准版本。

关于java - 以编程方式从 Eclipse 捕获编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16375474/

相关文章:

python - Pandas 有条件地选择多列

python - 使用报纸从 HTML 中提取图像

java - 如何在有限的时间内(超时)从 DatagramSocket 中读取数据 block ?

eclipse - Javacards IDE 和 Eclipse 的 JCOP 工具无法下载

java - 为什么 Eclipse 说 null 是原始类型?

java - 避免 Eclipse 中多个 Java 版本的 "no JREs installed in the workspace that are strictly compatible"警告

c# - 直观地提取html元素

java - Insert 上没有写@CreatedDate 注释的字段,@LastModifiedDate 是

java - 将装箱字节设置为字节文字时出错 - Java

java - Scala - 运行时字符串模板