使用java 5的0.20.2 API hadoop版本

我已经开始尝试在java 1.5.0_14中实现MapReduce算法的maven项目。 我选择了0.20.2 API hadoop版本。 在pom.xml中,我正在使用以下依赖项:

org.apache.hadoop hadoop-core 0.20.2 

但是当我使用导入到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)类文件有错误的版本50.0,应该是49.0

有人知道我该如何解决这个问题。

谢谢。

Maven默认编译为JDK 1.4兼容性。 你需要改变它。

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

  org.apache.maven.plugins maven-compiler-plugin 2.0.2  1.6 1.6   

[编辑:谢谢Sean指出Hadoop需要JDK 6]

我遇到了同样的问题。 原来sbt本身是在Java 5上运行的,这是我Mac上的默认设置,这是一个愚蠢但有效的理由。 一旦我改变了我的sbt脚本以明确地从Java6开始,一切都运行良好。

无论您的maven-compiler-plugin的源和目标配置(仅控制您自己的源代码的编译方式),您必须使用1.6 JVM来运行Hadoop的代码,因为它是针对“1.6”JVM编译的。

因此,只需安装1.6 java运行时并使用它来运行程序。