线程“main”中的异常java.lang.UnsupportedClassVersionError,不支持的major.minor版本52.0

时间:2013-08-10 12:32:18

标签: java hadoop

我正在尝试在hadoop - 1.0.4上运行WordCount示例,我收到以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: WordCount :
Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

我使用以下java版本:

java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)

JAVA_HOME也表示java7安装目录。

感谢您的帮助。

7 个答案:

答案 0 :(得分:19)

似乎您正在使用JDK8进行编译,而使用较低版本则使用它。

所以

假设使用eclipse,Window > Preferences > Compiler > compiler level

然后设置较低级别(<当前一级)。

答案 1 :(得分:4)

我遇到了同样的问题,我解决了。我找到 我JAVA_HOME中的hadoop-env.sh/usr/lib/jvm/java-6-openjdkJAVA_HOME中的/etc/profile/usr/local/java/jdk1.8.0_25

我将JAVA_HOME中的/etc/profile更改为与/usr/lib/jvm/java-6-openjdk相同的hadoop-env.sh并使用 $source /etc/profile # to make /etc/profile effects

我的问题解决了!我希望这会对你有所帮助。

答案 2 :(得分:0)

看起来有人设法用Java 8编译器编译一个类。重新编译违规jar,其合规级别为Java 7或更低。

答案 3 :(得分:0)

很明显,那不行!您正在编译较新的JDK并在较旧的JDK / JRE上进行部署。您需要在较旧的JDK上进行编译。

答案 4 :(得分:0)

问题是由于.jsp文件正在使用比预期更高的编译器(8)进行编译(7)。将所有编译级别更改为较低的一级(即7)也会更改.exe所在的同一文件夹中的eclipse配置设置文件中给出的jdk路径。

答案 5 :(得分:0)

我想你已经得到了你的答案..只是要添加,在项目的eclipse下有一个JRE系统库[JavaSE-1.x]文件夹..右键单击它你会看到JRE系统库屏幕。您可以设置执行环境。

答案 6 :(得分:0)

我也遇到了同样的问题,应该使用相同的JAVA版本进行编译,并且在执行位置使用相同或更高版本,尽管反之亦然导致此错误。 如果您选中:

  1. Window > Preferences > Compiler > compiler level
  2. java -version 而且两者都具有相同的版本,那么您就可以使用了。 在Eclipse中创建新项目时: 在{strong> JRE 下的File -> New -> Java Project选中使用执行环境enter image description here ,并设置为您的系统上和您需要执行该项目的系统上相同的版本。