我在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)
答案 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兼容性