我已经开始尝试在java 1.5.0_14中实现MapReduce算法的maven项目。我选择了0.20.2 API hadoop版本。在pom.xml中,我正在使用以下依赖项:
<依赖性>
< groupId>org.apache.hadoop< /groupId>
< artifactId>hadoop-core< /artifactId>
< version>0.20.2< /version>
&LT; /依赖性&GT;
但是当我使用导入到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 。类) 类文件有错误的版本50.0,应该是49.0 。
有人知道我该如何解决这个问题。
感谢。
答案 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>
[编辑:谢谢Sean指出Hadoop需要JDK 6]
答案 1 :(得分:1)
我遇到了同样的问题。原来sbt本身是在Java 5上运行的,这是我Mac上的默认设置,这是一个愚蠢但有效的理由。一旦我改变了我的sbt脚本以明确地从Java6开始,一切都运行良好。
答案 2 :(得分:0)
无论你的maven-compiler-plugin的源代码是什么?目标配置(仅控制自己的源代码编译方式)必须使用1.6 JVM来运行Hadoop的代码,因为它是针对“1.6”JVM编译的。
因此,只需安装1.6 java运行时并使用它来运行程序。