java.lang.UnsupportedClassVersionError:.class文件中的错误版本号
我在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)]
。
为什么我会收到此错误,如何解决?
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)
当您尝试运行为比您拥有的Java版本更新的Java版本编译的类时,会出现此错误; 例如,如果您尝试在Java 5 JVM上使用为Java 6或更高版本编译的类。
它不一定是你自己的class级; 您可能正在使用为Java 6或更高版本构建的库。
您使用的是特定库(JAR文件)吗? 检查它们是否与Java 5兼容。 或者将Java版本升级到Java 6。
我的猜测是你使用的是使用Java 1.6构建的第三方库。
顺便问一下你有没有理由使用Java 1.5? Java 1.6已经存在很长时间了,Java 1.5将不再很快得到支持(如果还没有)。
您有一个为较新的Java而不是您正在使用的Java编译的类。
堆栈跟踪应显示麻烦类的名称。 也许这是你正在使用的图书馆?
您可能会发现正在使用的java版本不是代码所期望的副本。
例如,如果您的$ PATH(此示例在Unix上)设置为/ usr / bin :(其他目录),则在运行java时将获得/ usr / bin / java:
$ java -version java版“1.5.0_18” Java(TM)平台,商业标准版(版本1.5.0_18-b02) Java HotSpot(TM)服务器VM(版本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运行时环境(版本1.6.0_14-b08) Java HotSpot(TM)服务器VM(内置14.0-b16,混合模式)
所以解决方法是在调用java之前将正确版本的java所在的目录添加到路径的开头,或者通过其绝对路径调用好的java版本。
如果无法升级JRE,则可以使用较低的java版本编译代码。
来自eclipise:
项目属性> Java编译器>编译器合规性级别> [设置为您拥有的任何JRE版本]
请参阅以下屏幕以设置JRE 1.5兼容性