问题很简单。我正在尝试使用以下命令在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)
你们对发生的事情有什么线索吗?
这是javadoc报告的错误。Java 8中的javadoc版本比早期版本中的Javadoc版本严格得多。现在,如果它检测到认为无效的标记,则将发出错误信号,包括在不希望出现的结束标记的情况下。
要关闭javadoc中的此检查功能,请将-Xdoclint:none
标志添加到javadoc命令行中。有关如何在Maven环境中执行此操作的信息,请参阅Stephen Colebourne的博客主题。具体来说,添加
<additionalparam>-Xdoclint:none</additionalparam>
到适当的属性或配置文件。
不过,有几件事很奇怪。该文件的当前(主干)版本似乎</ul>
在正确的位置带有结束标记。该文件的历史记录表明之前丢失的end标签是最近才添加的,但是它似乎在Hadoop 2.4中。JDK 8u5 javadoc可以成功处理此文件,而不必抑制任何错误。
是否在添加了以前丢失的</ul>
结束标签的地方应用了补丁,但由于将结束标签已添加到原始源中,所以现在是多余的?多余的结束标记将导致javadoc失败,并显示此错误。
更新
我一直在寻找错误的分支。该文件的2.4.1版本显然带有一个额外的</ul>
结束标签。我对错误补丁的猜想是正确的。主干上文件的历史记录显示,HADOOP-8059在2012年6月添加了许多javadoc注释。这些新添加项缺少</ul>
结束标记。2014年1月,HADOOP-10320添加了丢失的结束标签。HADOOP-10320的补丁已移植到2.4.1分支,但是HADOOP-8059的新javadocs没有移植,导致标记格式错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句