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

我试图在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安装目录。

谢谢你的帮助。

好像您正在使用JDK8进行编译,而较低版本则使用它的位置。

所以

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

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

我有同样的问题,我解决了。 我发现我的hadoop-env.sh中的JAVA_HOME/usr/lib/jvm/java-6-openjdk/etc/profileJAVA_HOME/usr/local/java/jdk1.8.0_25

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

我的问题解决了! 我希望这能帮到您。

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

很明显,这将无法正常工作! 您正在编译较新的JDK并在较旧的JDK / JRE上进行部署。 您需要在较旧的JDK上编译。

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

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