无法用java8构建Hadoop2.4.1

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

问题很直接。我正在尝试使用以下命令在windows上编译hadoop2.4.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 ,它没有,并且失败,并给出以下错误:

[INFO] Apache Hadoop Annotations ......................... FAILURE [4.086s]
---
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8
.1:jar (module-javadocs) on project hadoop-annotations: MavenReportException: Er
ror while creating archive:
[ERROR] Exit code: 1 - C:\hadoop-src\hadoop-common-project\hadoop-annotations\sr
c\main\java\org\apache\hadoop\classification\InterfaceStability.java:27: error:
unexpected end tag: </ul>
[ERROR] * </ul>
[ERROR] ^
[ERROR]
[ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_05\jre\..\bin\javadoc.
exe" -J-Dhttp.proxySet=true -J-Dhttp.proxyHost=proxy -J-Dhttp.proxyPort=3128 @op
tions @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in 'C:\hadoop-src\hadoop-common-pro
ject\hadoop-annotations\target' dir.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[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 rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
[ERROR]

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

C:\hadoop-src>javac -version
javac 1.8.0_05

以及

C:\hadoop-src>java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
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关于此主题的博客文章。具体来说,添加

<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生成,只需运行

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

相关问题