Java,UnsupportedClassVersionError。我怎样才能解决这个问题

时间:2011-12-02 00:32:59

标签: java version

我正在日食中做作业,它报告没有错误,甚至没有警告。当我尝试从终端编译它时,我得到了以下错误。它通过eclipse运行并编译得很好。我认为它与java版本有关?无论如何要解决它或试图绕过它?

vedran@vedran-debian:~/java/oop/Aufgabe6$ java Test 
Exception in thread "main" java.lang.UnsupportedClassVersionError: Test : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Test. Program will exit.

Java版:

java version "1.6.0_23" 
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-1) 
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode) 

编辑:

谢谢大家的解释。这似乎是一个java6 / 7问题。我只是用1.6编译它,它就像魅力一样。

6 个答案:

答案 0 :(得分:6)

Test.class文件已在Java 7(主要/次要版本51.0)中编译,因此它与Java 6(主要/次要版本50.0)运行时不兼容。在Java 6(或更早版本)中编译.java文件,或在Java 7运行时中运行.class。

答案 1 :(得分:3)

也许你在eclipse中的编译器有所不同?偏好 - >编译器:编译器级别。也许Java 7?

如果您使用的是Linux,则可以查看所有已安装的运行时环境:update-alternatives --config java。在这里你可以选择正确的。在这里你应该能够找到OpenJDK 7。

答案 2 :(得分:2)

51.0表示Java版本7,因此您尝试运行的类文件是使用版本7编译器编译的。如果需要使用版本6 JVM运行代码,则应指示编译器发出版本6兼容的字节代码。

javac -version 6 ...

该命令行参数将强制更高版本的编译器将其输出限制为与版本6运行时环境兼容的字节码。

答案 3 :(得分:1)

您是否有可能编译了测试程序Java 7并且现在正尝试在终端中针对Java 6运行它?我会尝试在终端(即Java 6)中重新编译,如果是这种情况,然后尝试重新运行该程序。

答案 4 :(得分:1)

在Eclipse中,转到窗口 - >首选项 - > Java - >编译器,您将看到标有“编译器合规性级别”的字段。将其设置为1.6,然后在Eclipse中重新编译。

Eclipse与命令行javac之间存在Java版本不匹配。具体来说,您的javac似乎使用的是64位1.6。 Eclipse显然使用1.7。

答案 5 :(得分:0)

如果上面的解决方案全部设定,如果你仍然有同样的问题和 如果您使用MAVEN,请检查pom.xml。 JAVA ASSIST JAR应该指向16.1-GA,如果您使用jdk 1.6 else对应的版本应该为您指向的jdk添加。(例如:3.17.1 for jdk 7)。对于jdk 6添加依赖项以及以下详细信息< / p>

  1. groupId:org.javassist
  2. artifactId:javassist
  3. 版本:3.16.1-GA