当我使用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选项可以解决这个问题?
答案 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 programmatically或as a separate application from the command line。