java.lang.不受支持的类版本错误:.class文件中的版本号错误?

2022-08-31 07:56:46

当我包含一个必须从源代码编译的开源库时,我得到了这个错误。现在,Web上的所有建议都表明代码是在一个版本中编译的,并在另一个版本(新版本和旧版本)中执行的。但是,我的系统上只有一个版本的 JRE。如果我运行以下命令:

$ javac -version
javac 1.5.0_18

$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

并签入Eclipse以获取java库的属性,我得到1.5.0_18

因此,我必须得出结论,类本身内部的其他内容是抛出异常??这可能吗?


答案 1

我了解到这样的错误消息通常是正确的。当它不可能(在你的脑海中)是报告的错误所说的时,你就会去寻找另一个领域的问题......几个小时后才发现原始错误消息确实是正确的。

既然你正在使用Eclipse,我认为Thilo是对的,你收到这个消息的最可能原因是因为你的一个项目正在编译1.6类。如果你在系统上只有1.5的JRE并不重要,因为Eclipse有自己的编译器(不是javac),只需要一个1.5的JRE来编译1.6的类。这可能很奇怪,需要取消选中设置才能允许这样做,但我刚刚设法做到了。

对于有问题的项目,请检查“项目属性”(通常为 Alt+Enter)、“Java 编译器”部分。下面是一个配置为编译 1.6 但只有 1.5 JRE 的项目的图像。

enter image description here


答案 2

你有没有试过做一个完整的“清理”,然后在Eclipse中重建(Project->Clean...)?

您是否能够直接从命令行使用“javac”和“java”进行编译和运行?这能正常工作吗?

如果右键单击项目,转到“属性”,然后转到“Java构建路径”,则任何选项卡下是否有任何可疑条目?这实质上是你的类路径。

在 Eclipse 首选项中,您可能还需要仔细检查“Java”部分中的“已安装的 JRE”部分,并确保它与您认为应该匹配的内容。

你肯定有一个陈旧的.class文件躺在某个地方,或者你正在使用的Java版本中出现编译时/运行时不匹配。


推荐