我正在尝试编写一个程序,它可以从 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 等工具来自动获取错误。我能想到的最简单的例程是这样的:
- 单击“问题”选项卡将其置于最前面
- 点击“错误”顶级节点,选择它
- 键入要复制的热键;所有错误都将复制到剪贴板,每行一个
- 粘贴或以其他方式将剪贴板转储到文件中
- 对您要捕获的任何其他类别重复 2-4,例如“警告”
重写Eclipse插件
最后,如果您真正需要的是某种对用户透明的错误消息的实时捕获,那么您就只能这样做了。
您需要进入 Eclipse 源代码,可能是“问题” View 的定义,并修改它以传递您的代码信息。那么任何需要它的人都必须使用您定制的 Eclipse 版本,而不是标准版本。
关于java - 以编程方式从 Eclipse 捕获编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16375474/