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

时间:2011-06-27 13:10:17

标签: java macos unsupported-class-version

我在eclipes java.lang.UnsupportedClassVersionError: Bad version number in .class file中遇到此错误。

当我运行javac -version时,它会打印

javac 1.5.0_28

如果我右键单击,属性 - > java编译器,它表示我正在使用1.5,如果我转到java build path,那么我在那里有JRE System Library [JVM 1.5.0 (MacOS X Default)]。 / p>

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

EDITS

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)

5 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:2)

我的猜测是你使用的是使用Java 1.6构建的第三方库。

顺便问一下你有没有理由使用Java 1.5? Java 1.6已经存在很长时间了,Java 1.5将不再很快得到支持(如果还没有)。

答案 2 :(得分:0)

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

堆栈跟踪应显示麻烦类的名称。也许这是你正在使用的图书馆?

答案 3 :(得分:0)

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

例如,如果您的$ PATH(此示例在Unix上)设置为/ usr / bin :(其他目录),则在运行java时将获得/ usr / bin / java:


    $ java -version
    java version "1.5.0_18"
    Java(TM) Platform, Standard Edition for Business (build 1.5.0_18-b02)
    Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
    $ which java
    /usr/bin/java

...但你的程序需要这样的工作:


    $ /usr/local/java/jdk1.6/bin/java -version
    java version "1.6.0_14"
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
    Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)

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

答案 4 :(得分:0)

如果无法升级JRE,则可以使用较低的java版本编译代码。

来自eclipise:

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

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