java.lang.UnsupportedClassVersionError:.class文件中的版本号错误?

grm*_*bob 140 java version

当我包含一个我必须从源代码编译的开源库时,我收到此错误.现在,网上的所有建议都表明代码是在一个版本中编译的,并在另一个版本中执行(旧的新版本).但是,我的系统上只有一个版本的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)
Run Code Online (Sandbox Code Playgroud)

并在Eclipse中检查java库的属性,我得到了 1.5.0_18

因此,我必须得出结论,一个类本身的内部,抛出异常?这甚至可能吗?

Jos*_*non 184

我已经知道像这样的错误消息通常是正确的.当它不可能(在你的脑海中)被报告的错误所说的时候,你去寻找另一个地区的问题...只是在几小时之后发现原始的错误信息确实是正确的.

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

对于有问题的项目,请检查项目属性(通常是Alt + Enter),Java Compiler部分.这是一个配置为编译1.6的项目的图像,但只有1.5 JRE.

在此输入图像描述

  • 如果你有JDK(有源代码),你应该能够在Eclipse中添加一些断点,并希望看到它试图加载的类.最简单的方法可能是UnsupportedClassVersionError(或Eclipse Exception断点,'J!'图标)的构造函数中的断点,然后您可以检查它是如何到达那里的. (3认同)
  • 我遇到过同样的问题.我做的错误是我使用的是1.5 JRE和1.6编译器.哪个没有解决不支持的类转换错误.所以我在我的eclipse中安装了1.6 JRE并使用了1.6编译器.然后一切都开始正常了. (2认同)

Bre*_*ode 9

您是否尝试过完全"干净"然后在Eclipse中重建(Project-> Clean ...)?

你能直接从命令行编译和运行"javac"和"java"吗?这是否正常?

如果右键单击项目,请转到"属性",然后转到"Java构建路径",任何选项卡下是否有可疑条目?这基本上就是你的CLASSPATH.

在Eclipse首选项中,您可能还需要仔细检查"Java"部分中的"已安装的JRE"部分,并确保它符合您的预期.

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


Thi*_*ilo 5

你用Eclipse编译了吗?它使用不同的编译器(不是javac).这不应该导致此错误(如果一切配置正确),但您可以尝试使用javac编译它.

如果这解决了问题,请尝试查看Eclipse是否有一些不正确的编译器设置.特别是它以Java 5为目标.