运行Hadoop映射减少作业,错误:不支持major.minor版本51.0

时间:2014-03-24 20:44:22

标签: java eclipse hadoop amazon-web-services

我正在运行使用hadoop 2.2.0在Amazon Web Services Red Hat 6.4上运行map-reduce作业。我正在使用的Jar文件是在我的本地Windows 7计算机上构建的。在我的Windows 7计算机上本地安装Hadoop时,map reduce作业运行正常,但是当我尝试在Amazon Instance上运行它时,我收到以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: mapReduce/Tes
tXMLConfig : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:205)

我已经完成了一些研究,当您在运行旧版Java的系统上运行在较新版本的Java中构建的Jar文件时,似乎会生成此错误。但是,当我在我的Windows 7系统上运行'java -version'时(使用Eclipse Kepler构建Jar文件) 给我以下内容:

java版“1.8.0” Java(TM)SE运行时环境(版本1.8.0-b132) Java HotSpot(TM)64位服务器VM(内置25.0-b70,混合模式)

当我在我的Amazon Web Services Red Hat 6.4实例上运行它时,它还提供:

java版“1.8.0” Java(TM)SE运行时环境(版本1.8.0-b132) Java HotSpot(TM)64位服务器VM(内置25.0-b70,混合模式)

两个系统都使用完全相同的Java构建,所以我不确定java版本是不匹配的问题。在Eclipse中,当我转到Window> Java>编译器,我可以看到“编译器合规级别”是1.7。但是,带有Java 1.8的Hadoop应该能够运行基于旧版Java的Jar文件(它使用java 1.8在Windows 7机器上运行)。

我似乎无法在这里找到任何问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

尝试将JAVA_HOME环境变量设置为JDK的主目录。我之前遇到过这个错误,我的java -version也是正确的,但没有设置JAVA_HOME。将JAVA_HOME设置为JDK Contents Home后,我不再遇到此问题。

注意 - 这发生在我的Macbook上,并且使用不同的软件。