无法用java8构建Hadoop2.4.1

ht4b089n  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(503)

问题很直接。我正在尝试使用以下命令在windows上编译hadoop2.4.1:

  1. mvn clean package -Pdist,native-win -DskipTests -Dtar

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_51 ,工作正常。
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05 ,它没有,并且失败,并给出以下错误:

  1. [INFO] Apache Hadoop Annotations ......................... FAILURE [4.086s]
  2. ---
  3. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8
  4. .1:jar (module-javadocs) on project hadoop-annotations: MavenReportException: Er
  5. ror while creating archive:
  6. [ERROR] Exit code: 1 - C:\hadoop-src\hadoop-common-project\hadoop-annotations\sr
  7. c\main\java\org\apache\hadoop\classification\InterfaceStability.java:27: error:
  8. unexpected end tag: </ul>
  9. [ERROR] * </ul>
  10. [ERROR] ^
  11. [ERROR]
  12. [ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_05\jre\..\bin\javadoc.
  13. exe" -J-Dhttp.proxySet=true -J-Dhttp.proxyHost=proxy -J-Dhttp.proxyPort=3128 @op
  14. tions @packages
  15. [ERROR]
  16. [ERROR] Refer to the generated Javadoc files in 'C:\hadoop-src\hadoop-common-pro
  17. ject\hadoop-annotations\target' dir.
  18. [ERROR] -> [Help 1]
  19. [ERROR]
  20. [ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
  21. ch.
  22. [ERROR] Re-run Maven using the -X switch to enable full debug logging.
  23. [ERROR]
  24. [ERROR] For more information about the errors and possible solutions, please rea
  25. d the following articles:
  26. [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
  27. xception
  28. [ERROR]

如前所述,我只做了些改变 JAVA_HOME . 错误消息似乎表明错误与代理相关,但我不知道原因。
在这两种情况下,我都有

  1. C:\hadoop-src>javac -version
  2. javac 1.8.0_05

以及

  1. C:\hadoop-src>java -version
  2. java version "1.8.0_05"
  3. Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

你们有什么线索吗?

x6yk4ghg

x6yk4ghg1#

这是javadoc报告的错误。Java8中的javadoc版本比早期版本严格得多。现在,如果它检测到它认为无效的标记(包括不需要的结束标记),它就会发出错误信号。
要在javadoc中关闭此签入,请添加 -Xdoclint:none 指向javadoc命令行的标志。有关如何在maven环境中执行此操作的信息,请参阅stephen colebourne关于此主题的博客文章。具体来说,添加

  1. <additionalparam>-Xdoclint:none</additionalparam>

到适当的属性或配置文件。
不过,有一些奇怪的事情正在发生。此文件的当前(trunk)版本似乎具有 </ul> 在正确的位置结束标记。该文件的历史记录表明,先前丢失的end标记是最近添加的,但它似乎在hadoop2.4中。这个文件本身由jdk8u5javadoc成功处理,而不必抑制任何错误。
是否在某个地方应用了一个补丁,添加了以前丢失的内容 </ul> 结束标记,因为结束标记已添加到原始源,所以现在是多余的?额外的结束标记将导致javadoc失败并出现此错误。
更新
我看错了树枝。这个文件的2.4.1版本显然有一个额外的 </ul> 结束标记。我对一个错误补丁的猜测是对的。trunk上文件的历史记录显示,hadoop-8059在2012年6月添加了一堆javadoc注解。这些新添加的内容缺少 </ul> 结束标记。2014年1月,hadoop-10320添加了缺失的结束标记。hadoop-10320的补丁被移植到2.4.1分支,但是hadoop-8059的新javadocs没有被移植,导致了错误的标记。

uqxowvwt

uqxowvwt2#

除了stuarts的建议(我很难找到将additionalparam放在哪里):为了完全跳过javadoc生成,只需运行

  1. mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true

相关问题