我正在運行使用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機器上運行)。
我似乎在這裏找不到任何問題。任何幫助都感激不盡!
您的Eclipse項目是否使用1.8 JRE系統庫? – climbage
'bin/hadoop'是一個腳本文件。在該文件的末尾,您可以回顯'$ JAVA'變量以查看您正在運行的JVM的哪個版本。它可能是'/ etc/alternatives/java',它會指向一些OS標準安裝。 – kdgregory
謝謝,這解決了我的問題。即使我安裝了java 1.8,bin/hadoop腳本文件也試圖用java 1.6運行。 –