2014-03-24 66 views
1

我正在运行使用hadoop 2.2.0在Amazon Web Services Red Hat 6.4上运行map-reduce作业。我使用的Jar文件是建立在我的本地Windows 7计算机上的。地图减少作业运行在我的Windows 7计算机上的本地安装的Hadoop的罚款,但是当我试图在亚马逊比如我碰到下面的错误运行:运行Hadoop Map减少作业,错误:不支持major.minor版本51.0

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) 

我做了一些研究,它好像当你运行一个Jar文件时产生了这个错误,这个Jar文件是在一个运行Java旧版本的系统上的较新版本的Java中构建的。然而,当我在我的Windows 7系统上运行 'Java的版本'(其中的JAR文件是使用Eclipse开普勒建)它 给了我下面的:

Java版本 “1.8.0” 的Java(TM)SE运行时环境(build 1.8.0-b132) Java HotSpot™64位服务器虚拟机(内部版本25.0-b70,混合模式)

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

java版本“1.8.0” Java™SE运行时环境(build 1.8.0-b132) Java HotSpot™64位服务器VM(版本25.0-b70,mix编辑模式)

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

我似乎在这里找不到任何问题。任何帮助都感激不尽!

+0

您的Eclipse项目是否使用1.8 JRE系统库? – climbage

+0

'bin/hadoop'是一个脚本文件。在该文件的末尾,您可以回显'$ JAVA'变量以查看您正在运行的JVM的哪个版本。它可能是'/ etc/alternatives/java',它会指向一些OS标准安装。 – kdgregory

+0

谢谢,这解决了我的问题。即使我安装了java 1.8,bin/hadoop脚本文件也试图用java 1.6运行。 –

回答

1

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

注意 - 这发生在我的Macbook上,以及一个不同的软件。

+0

我的JAVA_HOME没有设置任何东西,所以我将它设置为jdk1.8.0/bin目录的位置,但仍然出现错误。 –

+1

@Hi_Im_Tim - 'JAVA_HOME'应该设置为Java安装的基本目录,而不是'bin'目录。 – kdgregory

+0

@Hi_Im_Tim不应该设置为bin,正如kdgregory所说。例如,我目前的JAVA_HOME是/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home –

相关问题