6

我在 eclipes 中有这个错误java.lang.UnsupportedClassVersionError: Bad version number in .class file

当我运行javac -version它打印

javac 1.5.0_28

如果我右键单击,在 eclipes 中,属性-> java 编译器它说我正在使用1.5,如果我然后去java build path,我就JRE System Library [JVM 1.5.0 (MacOS X Default)]在那里。

为什么我会收到此错误,我该如何解决?

编辑

java -version印刷

java version "1.5.0_28"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_28-b04-382-9M3326)
Java HotSpot(TM) Client VM (build 1.5.0_28-157, mixed mode, sharing)

我的应用程序中的其他库是 libgdx 库。

完整的错误是

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
4

5 回答 5

14

当您尝试运行一个为比您拥有的更新的 Java 版本编译的类时,您会收到此错误;例如,如果您尝试在 Java 5 JVM 上使用为 Java 6 或更高版本编译的类。

它不一定是你自己的类;您可能正在使用一些为 Java 6 或更高版本构建的库。

您是否使用特定的库(JAR 文件)?检查这些是否与 Java 5 兼容。或者将您的 Java 版本升级到 Java 6。

于 2011-06-27T13:13:46.243 回答
2

我的猜测是您使用的是使用 Java 1.6 构建的 3rd 方库。

顺便说一句,您使用 Java 1.5 有什么原因吗?Java 1.6 已经发布很久了,Java 1.5 很快将不再受支持(如果还没有的话)。

于 2011-06-27T13:13:58.117 回答
0

您有一个为比您正在使用的更新的 Java 编译的类。

堆栈跟踪应该显示麻烦类的名称。也许它是您正在使用的库?

于 2011-06-27T13:14:13.937 回答
0

您可能会发现正在使用的 java 版本不是代码所期望的副本。

例如,如果你的 $PATH(这个例子是在 Unix 上)设置为 /usr/bin:(其他目录),当你运行 java 时你会得到 /usr/bin/java:

    $ java -版本
    java版本“1.5.0_18”
    Java(TM) 平台,商业标准版(内部版本 1.5.0_18-b02)
    Java HotSpot(TM) 服务器虚拟机(内部版本 1.5.0_18-b02,混合模式)
    $哪个java
    /usr/bin/java

...但是您的程序需要这样的东西才能工作:

    $ /usr/local/java/jdk1.6/bin/java -version
    java版本“1.6.0_14”
    Java(TM) SE 运行时环境 (build 1.6.0_14-b08)
    Java HotSpot(TM) 服务器虚拟机(build 14.0-b16,混合模式)

所以解决方法是在调用java之前将正确版本的java所在的目录添加到路径的开头,或者通过其绝对路径调用好版本的java。

于 2013-01-22T18:33:12.400 回答
0

如果升级您的 JRE 不是一个选项,您可以使用较低的 java 版本编译您的代码。

从日食:

项目属性 > Java 编译器 > 编译器合规级别 > [设置为您拥有的任何 JRE 版本]

请参阅下面的屏幕以设置 JRE 1.5 兼容性

于 2016-11-25T16:01:30.263 回答