使用Maven错误构建Hadoop

时间:2013-07-18 18:09:45

标签: maven hadoop

当我尝试使用:

构建hadoop时

mvn install -e -DskipTests

它总是抛出以下错误:

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/xiu/myGit/hadoop2/hadoop-mr1-project/hadoop-mr1/src/test/java/org/apache/hadoop/mapreduce/security/TestTokenCache.java:[153,4] getDelegationTokenSecretManager() is not public in org.apache.hadoop.hdfs.server.namenode.FSNamesystem; cannot be accessed from outside package
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Apache Hadoop MR1 ................................. FAILURE [3.144s]
[INFO] Apache Hadoop MR1 Examples ........................ SKIPPED
[INFO] Apache Hadoop MR1 Project ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.353s
[INFO] Finished at: Thu Jul 18 11:01:30 PDT 2013
[INFO] Final Memory: 32M/100M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-mr1: Compilation failure
[ERROR] /home/xiu/myGit/hadoop2/hadoop-mr1-project/hadoop-mr1/src/test/java/org/apache/hadoop/mapreduce/security/TestTokenCache.java:[153,4] getDelegationTokenSecretManager() is not public in org.apache.hadoop.hdfs.server.namenode.FSNamesystem; cannot be accessed from outside package
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

我试过干净并重新安装不同版本的maven而没有运气。任何专家都知道这里发生了什么?

2 个答案:

答案 0 :(得分:2)

我在hadoop 2.2.0源代码构建期间遇到了同样的问题。在“mvn install -DskipTests”期间,此错误出现在“Hadoop Auth”文件夹中。 从某个地方(我不记得从哪里)我开始知道在这个Hadoop Auth文件夹的pom.xml中有一个缺少的依赖项

依赖是

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-util</artifactId>
  <scope>test</scope>
</dependency>

我添加了此依赖项并再次尝试“mvn install -DskipTests”。我的错误已经解决了。

您只是尝试在“APACHE Hadoop MR1”的pom.xml中添加此依赖项。可能会解决您的错误

答案 1 :(得分:0)

似乎Maven编译器插件抱怨Hadoop getDelegationTokenSecretManager()中的FSNameSystem方法由于方法可见性而无法访问,即它不公开:

[ERROR] /home/xiu/myGit/hadoop2/hadoop-mr1-project/hadoop-mr1/src/test/java/org/apache/hadoop/mapreduce/security/TestTokenCache.java:[153,4] getDelegationTokenSecretManager() is not public in org.apache.hadoop.hdfs.server.namenode.FSNamesystem; cannot be accessed from outside package
[INFO] 1 error

我建议你查看你的pom.xml中定义的Hadoop版本,并仔细检查该方法是否真的可以在Hadoop版本JavaDoc中访问。