忽略编译错误 – Java

我有大约1500个文件要编译,其中15-20个文件有编译错误。 这些文件不在我的控制之下,所以我无法进行任何修改/更新/删除。 所以,我在这里有两个问题。

1)如何忽略这些15-20文件中的编译错误,并继续为其余文件生成.class文件。 是否有任何javac命令行选项或任何将忽略compliation错误并生成所有其他非错误文件的.class文件的东西。

2)java编译器会在看到这些错误后立即中止编译,还是会继续编译(生成.class文件)其他所有内容,最后会报告这些文件有错误。

您可以使用Eclipse 。 它的内部编译器 – 至少在某些情况下 – 能够继续使用其余的构建,即使某些类没有完全编译。 如果可能的话,它甚至会为破碎的类生成类文件,生成一旦调用就抛出exception的方法。

强烈建议您尽可能早地复制所有源代码并至少在您自己的副本中修复错误,但Eclipse的部分编译可能会对您有所帮助。

您不能忽略编译错误。 他们总是会失败。

您唯一的选择是与控制文件的人交谈以修复它们或找到替代它们的方法。

如果您尝试从构建中删除它们,则还必须删除使用这些文件的所有文件。 例如

class A { B b; } 

如果B有编译错误,你的构建脚本可以跳过B.java,但是当你点击A.java时,它会尝试编译B,所以必须删除A. 这可能被certificate是一项非常重要的任务。

您可以编写一个遍历源树的脚本,并为每个java文件单独调用javac。 这样,您将最终得到正确编译的所有文件,这些文件不依赖于有错误的文件。 不过,这将是一个非常缓慢的操作。 我希望它比单次调用javac要长几百倍(考虑到最终会有大约1500次调用)。

您可以使用ant任务中的exclude标记排除某些源文件。

        

编辑:但当然,任何依赖于排除类的java文件也将无法编译,除非您已经在类路径中预先编译了排除文件的版本。

创建有问题的文件的模型。 基本上与C头文件相同的想法包括函数签名和合理的默认返回值( nullfalse0 )。 这将允许javac编译所有内容,只是确保模拟类没有包含在最终发行版中,或者当它们最终在类路径中结束时你会有奇怪的错误。 这适用于实现损坏的接口并从破坏的类inheritance。

你什么意思

这将忽略compliation错误并为所有其他非错误文件生成.class文件

你是否意识到如果这些文件是相关的(就好像在一个项​​目中)那么依赖的源文件也不会编译……? 除了纠正编译错误并重试之外,没有办法绕过它!

  1. 告诉破坏密码的人(当然是外交的)尽快修复它。 其他人建议 (见第2条评论)将这些事件公开(在团队/公司内),这大大减少了这种编译错误的数量
  2. 评论阻止代码编译的所有内容(假设您不需要这些部分)

不应该处理不编译代码,而是处理代码的代码。 如果有更多的人在这个项目上工作, 每个人都必须在他的本地机器上处理同样的问题(找出它没有编译的原因,追踪错误的类,如果你的代码不依赖于那些排除/评论这些类他们,重建等等。只有一个人来修复问题更有效率,其他人只需要更新他的本地存储库。