2014-03-24 95 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 –

相關問題