内部编译器错误:类转换异常。

13

我在java文件的包名首字母'p'处遇到了以下错误:

内部编译器错误:java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.MethodBinding无法强制转换为org.eclipse.jdt.internal.compiler.lookup.FieldBinding,位于org.eclipse.jdt.internal.compiler.ast.ASTNode.resolveAnnotations(ASTNode.java:817)

从命令提示符中编译项目没有问题,但eclipse显示此错误。 我使用jdk 8。 如果有帮助将不胜感激

我尝试重新启动eclipse,清理项目,安装不同版本的eclipse等。


2
请问您能否展示代码、具体的JVM版本、Eclipse版本和操作系统? - WJS
你在Eclipse中使用的是ecj编译器,它与命令行中的编译器不同。 - Eugene
1
听起来像是Eclipse编译器的一个bug。要不要提交报告? - Thorbjørn Ravn Andersen
在提交错误报告之前,请确保您没有使用过时的版本,并且该问题尚未被其他人报告。 - howlger
@ThorbjørnRavnAndersen 不,你必须知道 resolveAnnotations 方法的调用者才能这样做。目前发布的 Eclipse JDT 版本中很少有这种错误。当前的 Eclipse 发布已经两个月了,没有一个包含字符串 ASTNode.java:817 的错误报告。更有可能是由第三方插件引起的。不幸的是,堆栈跟踪被截断了。请运行 new ArrayList().get(1); 并查看第一个堆栈跟踪项。您认为这看起来像应该向 Oracle 报告的错误吗? - howlger
显示剩余2条评论
4个回答

27

我有时会遇到这个错误,但不是经常发生,1.18.2 也无法解决。所以我现在使用 1.16.18,没有出现任何错误! - prashanth-g
1
该问题应该在当前的lombok快照(https://projectlombok.org/download-edge)和即将发布的1.18.10版本中得到解决。 - Jan Rieke
我刚在Lombok 1.18.8上遇到了错误,但是我更新到最新的lombok版本(1.18.10),异常就消失了。 - shiramy
对我有用!..我认为lombok不支持@JsonProperty POJO。非常感谢您的答案。 - Kiran Kawade

10
我注意到在我的工作空间中,只有带有 @JsonProperty 注释的类才会出现错误。我找到的解决办法是,在类中注释掉所有这些注释,保存并让工作空间重新构建。然后取消注释并保存,使类文件恢复到原始状态。在我的情况下,除非 Eclipse 再次编译该类,否则该错误将消失。通常只要类没有被更改,就不会出现这种情况。

你是正确的。在我这个情况下,注释掉这个注解之后错误也消失了。我有一个疑问,在另一个类中也有这个注解,但是只有一个类出现了这个错误。有什么想法吗? - Satish Patro

5

尝试将Lombok更新到最新版本(下载1.18.10),这对我起了作用。


1
对于像我一样更新了maven/gradle依赖版本但无法解决IDE问题的人,你需要下载lombok JAR文件(例如1.18.10),执行该jar文件,并将安装程序指向你的IDE主目录。 - atavio
这是我的情况的解决方案!我听说它与@JsonProperty有关。 - Mohammed H

1
在我的情况中,“Internal compiler error: java.lang.ClassCastException”是由于不同版本的lombok.jar引起的 - 一个被安装在Eclipse目录中作为Java代理,第二个在我的Maven项目中。在更新了Eclipse目录中的lombok.jar后,一切正常运行。
希望能对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接