Jvm错误java.lang.UnsupportedClassVersionError:

时间:2011-11-24 13:33:57

标签: java jvm

我收到此错误

Exception in thread "main" java.lang.UnsupportedClassVersionError: RunAll : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
  Could not find the main class: RunAll.  Program will exit.

我从我的同事那里复制了该文件夹,并设置了类路径(所需的jar应用程序相关) 当我运行时,我得到了上面的Erorr。

我不知道为什么我会收到此错误,因为我们有相同的java版本。

java版“1.6.0_27” Java(TM)SE运行时环境(版本1.6.0_27-b07) Java HotSpot(TM)64位服务器VM(版本20.2-b06,混合模式)

5 个答案:

答案 0 :(得分:5)

我怀疑你的同事正在使用Java 7 - Java 7编译器使用版本51.0发出字节码,除非告知不要。

自己重建代码,或者让他使用适当的-target选项重建代码。

答案 1 :(得分:1)

Version 51 class are produced by Java 1.7所以你和你的同事没有相同的Java版本。无论谁编译代码都使用Java 1.7。

所以你的选择是:

  • 将您的环境升级至1.7
  • 让你的同事升级他的环境
  • 自己将.java个文件编译为.class个文件

答案 2 :(得分:1)

通用答案是:您无法在较低版本的JVM上运行使用更高版本编译的类。

在您的情况下,这些类是使用Java 7编译的,您尝试使用Java 6运行它们。

答案 3 :(得分:0)

您尝试投放的课程是compiled using J2SE 7。你的同事显然没有用他认为正在编译的JVM进行编译。

答案 4 :(得分:0)

我正在搜索该错误代码,然后遇到了这个帖子,然后我发现,我正在运行一个不同的Java VM,然后运行我的JDK。我更新了我的环境变量并在我的JDK提供的VM上启动了我的应用程序,它解决了这个问题。

感谢这个帖子,它给了我提示要检查的内容。

我基本上是在不同的虚拟机上运行Apache TomCat然后是我的JDK正在编译的那个,在我更新设置之后,用正确的Java路径重新启动TomCAT我的问题已经解决。

要回答您的问题,请确保您的JDK和Java VM匹配。