Java:未解决的编译问题

什么是“java.lang.Error:未解决的编译问题”的可能原因?

附加信息:

从现有JAR顶部的构build中复制一组更新的JAR文件并重新启动应用程序后,我已经看到了这一点。 JAR是使用Maven构build过程构build的。

如果接口更改,我希望看到LinkageErrors或ClassNotFound错误。 上面的错误提示了一些较低级别的问题。

干净的重build和重新部署解决了这个问题。 可能这个错误表明一个损坏的JAR?

(2015-07-28重写)

在编译错误代码时,Eclipse的默认行为是生成引发exception的字节码。 这是可能的,因为Eclipse使用自己的内置编译器,而不是Apache Maven使用的JDK中的javac 。 如果您在使用命令行mvn命令处理的Maven项目上使用Eclipse,则可能发生这种情况。

治愈的方法是修复错误并重新编译,然后重新运行。

该设置在此扫描程序中用红色框标记:

在OS X下的Eclipse首选项

尝试清理eclipse项目

您的编译类可能需要使用新jar子从源代码重新编译。

尝试运行“mvn clean”,然后重build

你只是尝试通过命令来清理maven

 mvn clean 

之后的命令

 mvn eclipse:clean eclipse:eclipse 

并重build您的项目….

我多次得到这个错误,努力工作。 最后,我删除了运行configuration并重新添加了默认条目。 它工作得很好。

当我使用具有无效类path的启动configuration时,出现此错误。 就我而言,我有一个最初使用Maven的项目,因此启动configuration中有一个Maven类path元素。 我后来改变了项目使用Gradle,并从项目的类path中删除了Maven类path,但启动configuration仍然使用它。 我得到这个错误试图运行它。 清理和重build项目并没有解决这个错误。 相反,编辑启动configuration,删除项目classpath元素,然后将项目添加回类path中的用户条目。

大部分由ThorbjørnRavn Andersen正确回答。

这个答案试图揭示剩余的问题:如何在错误的类文件最终在jar?

每个构build(mvn&javac或eclipse)在遇到编译错误时都会以特定的方式发出信号,并拒绝从中创buildJar文件(或至less显着提醒您)。 将错误的类文件错误地放到jar中的最可能的原因是通过Maven和Eclipse的并发操作。

如果在运行mvn构build时打开Eclipse,应该禁用 Project > Build Automatically,直到mvn完成。