hadoop叢集執行jar包報錯(eclipse導jar)
阿新 • • 發佈:2018-12-04
報錯日誌:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hdfs/wordcount/WordcountDriver has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
注:可能數字是52和51,但問題是一樣的
使用的工具:centos7minimal,Linux下jdk版本是:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
windows下jdk版本與Linux下一致一致
C:\Users\york>java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
問題分析:
- 1.可能是Linux下jdk版本和windows下jdk版本差異太大(如1.6和1.8)
- 2.可能是Linux下jdk環境變數配置不完善
- 3.可能是hadoop叢集配置檔案不完善
嘗試解決:
- 通過問題查詢,許多方式是通過更改compiler level來更改,因為**修改Compiler compliance level為對應的級別即可。Eclipse對java專案的編譯並不是使用JDK完成的,是通過自帶的ECJ(Eclipse Compiler for Java)來實現的,這也就解釋了為什麼你本地安裝的JDK或啟動Eclipse是在配置檔案中通過-vm引數設定的jdk或新建專案時選擇的JDK的版本為1.6時,在這裡的編譯級別卻可以選為1.7或1.8的原因,因為所能編譯的最高級別跟那些JDK根本沒有關係,是由eclipse版本決定的。如果你的Eclipse在這個選項裡沒有你需要的級別,可以嘗試著升級高版本來實現。**可以參考:
此方法可以解決部分電腦出現上面的報錯日誌的問題,但測試過此方法後匯出jar包,叢集執行jar包時仍然報此錯誤。
原因是開發環境配置不一致。
完善的解決方案:
- 1.首先檢查Linux下jdk的環境變數是否正確
- 2.hadoop叢集配置檔案是否完善
- 3.更改compiler level,設定的編譯級別最好與Linux下jdk版本一致(比如都為1.8或者1.7)
- 4.最重要的一步,如果以上方式檢查都正常,但匯出的jar在叢集上執行仍然報錯,檢查專案的properties屬性
第一步:選中專案右鍵
第二步:確定專案編譯的版本設定,最好與叢集jdk版本一致,也可以比叢集jdk低一版(eclipse設定compiler level後會檢測專案的java compiler然後進行編譯)
第三步:確定後重新匯出jar包,部署叢集執行,成功
總結:jdk版本使用,穩定版使用1.8居多,叢集jdk版本最好與客戶端jdk版本一致(windows下)或者比叢集低一個版本,如1.7
- 此問題同樣適用於其他java專案