UnsupportedClassVersionError的原因是什么?

问题描述:

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:307) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source) 
at com.install4j.runtime.MacLauncher.main(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:592) 
at apple.launcher.LaunchRunner.run(LaunchRunner.java:115) 
at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:50) 
at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52) 

我完全不明白这一点;任何人都可以解释它吗?谢谢UnsupportedClassVersionError的原因是什么?

+3

将JavaScript从JavaScript重新标记为java。 – 2011-05-19 23:53:26

+2

@Rob,你可以修改代码的格式,标题,并删除txtisms,当你在那里。 :) – sarnold 2011-05-19 23:55:08

+0

这意味着破产。也许更多的代码可以解释发生了什么。 – thedaian 2011-05-19 23:56:04

当您使用更新版本的JDK编译代码并尝试在旧版本的JVM上运行时,可能会发生此错误。这是你自己编写的代码,是否使用了IDE(如Eclipse)?尝试更新JRE

+1

使用java -version和javac -version比较编译器的版本与JVM的版本。 – 2011-05-19 23:57:20

+3

@Kevin这实际上是许多初学者开始学习Java时犯的一个错误。因为我们都曾经在那里,所以一旦我们能够容忍初学者犯下的错误。 – 2011-05-19 23:58:59

+0

我将如何去更新我的JRE? – Peter 2011-05-20 00:10:16

这是说你正在使用不同版本的Java运行时的类文件。你正在安装什么程序(我注意到你的堆栈跟踪installj)?

尝试升级您的Java运行时。

+0

我试图为我的orgo实验室安装一个名为marvin sketch的程序,我以为我必须改变我的java,所以我做了,但现在我不知道如何解决它 – Peter 2011-05-20 00:06:20

+0

你是什么意思通过改变你的java?在运行安装程序之前,您是否对您的java执行过某些操作? – 2011-05-20 00:07:52

+1

是的,我去这里http://www.oracle.com/technetwork/java/javase/downloads/index.html 并下载其中一个程序,但我不知道哪一个即时通讯如此困惑:( – Peter 2011-05-20 00:11:05

这意味着您的编译器正在生成一些针对高于您尝试运行它的JVM的Java版本的Java版本。

如编译为Java 6和与Java运行5

解决方案1:升级JVM(类型Java的版本,看看你有什么)

解决方案2:目标较低版本(在日食例如,java编译器设置)

JAVA_HOME应该定义为年轻的Java版本,与您用于编译的版本相同。

当我安装JRE 1.8并试图在Eclipse Kepler上运行Hello WorldGAE application时,出现此错误。这是解决方案:

我安装了Java 8 support for KeplerEclipse Marketplace。然后我通过去Eclipse - >右键点击项目文件 - >Properties - >Java Build Path,我删除了JRE System Library 1.6,点击了Add Library - >JRE System Library - >Installed JRE's解决了我的问题。然后我点击Search,它自动发现版本1.8,然后我回到以前的观点,选择1.8,现在一切正常!