什么是java.lang.UnsupportedClassVersionError?

Suh*_*pta 7 java compiler-errors

是什么java.lang.UnsupportedClassVersionError

我从文档中读到:当Java虚拟机尝试读取类文件并确定文件中的主要版本号和次版本号不受支持但是无法理解这意味着什么时抛出.

文件中的主要版本和次要版本是什么?

当抛出以下异常时,我在其他机器上启动了一个应用程序:

Exception in thread "main" java.lang.UnsupportedClassVersionError: client (Unsupported major.minor version 51.0)
   at java.lang.ClassLoader.defineClass0(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
   at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
   at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
   at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Run Code Online (Sandbox Code Playgroud)

虽然它在我的机器上工作正常.

fge*_*fge 10

不同版本的JDK编译器生成不同的类版本.例如,Java 1.4生成48.0,1.5生成49.0和1.6 50.0.

JVM通常能够从JVM中加载比自身"更小"但从不更大的类.您可能正在尝试在1.5 JVM等上使用为1.6编译的类.

如果您感兴趣,找到类版本的好工具是bcel.特别是,它有一套很好的ant任务.