从javac调用中捕获堆栈跟踪

| 我希望做一些有趣的事情,我想这是一个好词。我想知道是否有一种方法可以使用javac任务从构建(当前使用ANT构建)中捕获与堆栈跟踪关联的文本。 有一段历史,我正在使用CI服务器CruiseControl,并希望编写一个适配器来捕获失败构建中的堆栈跟踪,并允许我从javac任务调用中解析出哪些文件导致构建失败。因此,例如,如果将代码检入到存储库中,该存储库中具有来自另一个类的方法签名,但是该类从未添加到存储库中,则javac任务将失败,并在该类中找不到符号异常。我希望能够读取堆栈跟踪信息以获得导致构建失败的类。 有关如何执行此操作的任何想法?我希望不必只读取日志文件并手动解析它(我觉得应该有一个更好的方法),但是如果没有,那么我也可以走那条路线。     
已邀请:
首先,用术语来说:编译器通常不会抛出异常(如果抛出异常,则可能是编译器中有错误,或者文件系统出现问题或类似的东西),因此没有堆栈跟踪。 编译时看到的是编译器输出,包括所有编译器错误消息。 查看ant的“ 0”任务,似乎没有办法将输出重定向到某个地方,这意味着只有通过解析整个ant运行的输出才能解析它。 通过使用Compiler API(javax.tools)并将DiagnosticListener添加到编译器运行中,可能会做得更好。但是,您必须自己将其包装到ant任务中。     

要回复问题请先登录注册