当我使用javac命令编译许多具有一些错误的相关* .java文件时,如何从正确的* .java文件生成* .classes?

时间:2017-08-04 04:12:19

标签: java javac

当我使用javac编译许多独立的.java文件时,我发现如果一个文件失败,则不会生成.class文件。 例如,我尝试这个命令:

javac A.java B.java C.java -Xmaxerrs 200 -Xmaxwarns 200

这些* .java文件之间存在无依赖关系。当我使用上面的命令编译这些* .java文件时,我发现:
案例1 :所有* .java文件都是正确的。在javac的编译之后我会得到A.class,B.class和C.class 案例2 :A.java有一些错误,B.java和C.java都是正确的。编译后,我无法获得任何.class文件。

如何在案例2 中编译javac之后获取B.class和C.class?是否有任何javac选项可以解决这个问题?

4 个答案:

答案 0 :(得分:2)

删除A.java并检查输出是否有效然后检查A.java的错误并重新编译

删除a.java编译器后无法正常工作,然后尝试调试主java代码。

答案 1 :(得分:1)

解决方法:Eclipse或IntelliJ等IDE尽可能“编译”。它们甚至允许您运行不能完全编译的代码!

或者,您可以考虑使用构建系统,例如maven,gradle,...... - 这样的工具肯定会允许这样做。

(对于任何合理大小的项目,无论如何使用构建系统都是“强制性的” - 因为这样:直接手动使用javac只是一种痛苦,并且有时候很容易做起来很复杂的事情)

答案 2 :(得分:0)

如果存在A到B或C的依赖关系,并且A类有一些编译问题,那么也不会生成B.class和C.class。修复A中的编译问题或清除依赖项。

答案 3 :(得分:0)

由于源代码文件之间没有依赖关系,我能想到的最简单的解决方案是为每个源文件调用javac一次。

作为替代方案,您可以使用ECJ,Eclipse IDE使用的编译器和JDT Core的一部分。从链接页面:

  

特别是,它允许运行和调试仍包含未解决错误的代码。

这是main differences between javac and the Eclipse compiler之一。

可以单独下载(请参阅 JDT核心批处理编译器部分,了解从download page链接的任何版本)。有一些帮助页面介绍了如何使用the compiler programmaticallyas a separate application from the command line