【发布时间】:2018-09-02 14:47:57
【问题描述】:
从 Java 9 升级到 10 后,在使用 Javadoc 工具生成文档时,指向 JDK 的链接不再起作用(例如,对于导入 java.util.Optional 的文件,{@link Optional} 呈现为 Optional 而不是 Optional ; 与@see、@param、@return 以及您通常会看到 Javadoc 链接的其他任何地方都有同样的问题。
我有一个简单的模块化项目,我正在使用带有 Javadoc 插件的 Maven(configuration 编译器插件部分中的source 和target 选项设置为10)。我的理解是,默认情况下它将-link https://docs.oracle.com/javase/10/docs/api/ 传递给Javadoc 工具。我的理解也是,从历史上看,Javadoc 工具期望一个名为package-list 的文本文件出现在告诉它查找外部文档的 URL 上。 Java 8has one。 Java 9has one。 Java 10 does not(404 错误)。显然,Javadoc 工具现在为模块化项目输出一个名为 element-list 而不是 package-list 的文本文件,但似乎 isn't provided 要么(也不适用于 Java 9,但它可用于 @ 的早期访问版本987654327@).
通过 IntelliJ 生成 Javadoc 并启用选项 Link to JDK documentation 会产生相同的结果。它说它正在将-link https://docs.oracle.com/javase/10/docs/api/ 传递给javadoc.exe,并报告javadoc: error - Error fetching URL: https://docs.oracle.com/javase/10/docs/api/。尽管有错误,但它确实输出了 Javadoc,但与 Maven 一样,不存在 JDK 链接。
这应该如何工作? Oracle 把 JDK 文档放到网上是不是搞砸了?
我pom.xml的相关位:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.1</version> <!--update dependency for Java 10 compatibility-->
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn -version 的输出:
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T12:49:05-07:00)
Maven home: C:\Program Files\apache-maven-3.5.3\bin\..
Java version: 10, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk-10
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
【问题讨论】:
-
@JacobG。文档本身存在并且工作正常。尝试使用 Javadoc 标记链接到它们时会出现问题。
-
三天前发布 Java 10 时,文档从 download.java.net 移至 docs.oracle.com。
-
@nullpointer
mvn clean test javadoc:javadoc(我有一些 JUnit 5 测试,我正在使用 Maven Surefire 插件的 2.19.1 版)。没有异常,构建成功。mvn clean package也适合我。我已将mvn -version的输出添加到问题的底部。 -
@gdejohn 可能我遇到了另一个针对 3.0.1 修复的后续错误场景。但我同意,与 Java-9 相比,文档链接的生成似乎中断了。也同意这一点,即使我用来测试先前链接的问题的最新的 maven-javadoc-plugin 的
3.0.1-SNAPSHOT也不包含 10 的package-list。我的一些直觉只是不断投入并指向Removal of the old standard doclet 的方向,这可能会影响插件。 -
我猜也是因为...... 我的理解是默认情况下它会将 -link docs.oracle.com/javase/10/docs/api 传递给 Javadoc 工具。这也是我的理解,过去,Javadoc工具期望一个名为 package-list 的文本文件出现在告诉它查找外部文档的 URL 中 .... 请注意 Java10 中的更改,It should be an error if javadoc cannot access the contents of aURL for -link.
标签: java maven javadoc maven-javadoc-plugin java-10