4

如果出现编译错误,ant javactask 不会编译所有可以编译的类。似乎javac一旦遇到第一个错误,任务(或编译器本身)就会停止。

failonerror属性对此行为没有任何影响。我没有设置compile属性(因此,使用了 Oracle JDK 的编译器)。

如果出现编译错误,是否可以编译尽可能多的类?
(最好不依赖任何特定的编译器)

一个用例是在开发过程中:
假设您正在实现一些新功能,但您还没有完成并且编译错误仍然存​​在。
同时,您需要修复一些其他错误并确保没有损坏,您需要执行由 IDE 项目工作区中的 ant 任务调用的标准测试套件。ant 任务尝试编译所有类/测试类,但由于您正在开发的类中的编译错误而失败。

告诉 ant/javac 不要因编译错误而失败,以便能够执行尽可能多的测试用例,这将非常有帮助。

4

1 回答 1

3

这与 无关ant,它javac会在出错时停止并且永远不会给你任何类文件。该failonerror属性只是说明如果编译发回错误,构建应该继续还是停止。

从 1.3 开始: http: //docs.oracle.com/javase/1.3/docs/tooldocs/tools-changes.html

“当新的 1.3 编译器在编译过程中检测到源文件中的错误时,它会继续解析剩余的源文件并尝试识别它们可能包含的任何进一步的错误。在编译的其余部分中完全禁止代码生成,但是,并且不会生成任何类文件,即使对于不包含错误的编译单元也是如此。”

您可能想使用其他一些编译器,例如 jikes。但实际上,谁会希望运行部分编译的类?

于 2012-05-14T13:20:42.663 回答