2010-06-07 51 views
6

我已經開始嘗試在java 1.5.0_14中實現MapReduce算法的Maven項目。我選擇了0.20.2 API hadoop版本。在pom.xml我使用從而以下依賴性:0.20.2使用Java的API hadoop版本5

<依賴>

< groupId>org.apache.hadoop< /groupId>  
< artifactId>hadoop-core< /artifactId>  
< version>0.20.2< /version> 

< /依賴>

但是,當我使用的是進口的org.apache。 hadoop類,我得到以下錯誤:

錯誤的類文件:$ {HOME_DIR} \ repository \ org \ apache \ hadoop \ hadoop-core \ 0.20.2 \ hadoop-core-0.20.2.jar(org /apache/hadoop/fs/Path.class) cl屁股文件有錯誤的版本50.0,應該是49.0

有人知道我該如何解決這個問題。

謝謝。

回答

2

Maven默認編譯爲JDK 1.4兼容性。你需要改變這一點。

您需要添加到您的pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

[編輯:謝謝肖恩指出Hadoop的需要JDK 6]

+0

類文件版本50映射到Java 6,所以實際上他需要指定「1.6」的源和目標。 (Hadoop需要Java 6.) – 2010-06-08 05:13:15

1

我就遇到了這個確切的同樣的問題。原來,sbt本身是在Java 5上運行的,這是我的Mac上的一個愚蠢但有效的原因。一旦我改變了我的sbt腳本以明確從Java6開始,一切正常。

0

不管你的maven-compiler-plugin的源碼是&目標配置(只能控制你自己的源代碼編譯的方式),你必須使用1.6 JVM來運行Hadoop的代碼,因爲它編譯的目標是「1.6」JVM。

所以,只需安裝一個1.6 java運行時並使用它來運行你的程序。