我正在尝试在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安装目录。
感谢您的帮助。
答案 0 :(得分:19)
似乎您正在使用JDK8进行编译,而使用较低版本则使用它。
所以
假设使用eclipse,Window > Preferences > Compiler > compiler level
然后设置较低级别(<当前一级)。
答案 1 :(得分:4)
我遇到了同样的问题,我解决了。我找到
我JAVA_HOME
中的hadoop-env.sh
是/usr/lib/jvm/java-6-openjdk
但JAVA_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)
答案 4 :(得分:0)
问题是由于.jsp文件正在使用比预期更高的编译器(8)进行编译(7)。将所有编译级别更改为较低的一级(即7)也会更改.exe所在的同一文件夹中的eclipse配置设置文件中给出的jdk路径。
答案 5 :(得分:0)
我想你已经得到了你的答案..只是要添加,在项目的eclipse下有一个JRE系统库[JavaSE-1.x]文件夹..右键单击它你会看到JRE系统库屏幕。您可以设置执行环境。
答案 6 :(得分:0)