JDK 11+ and Javadoc


Exit code: 1 - javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://docs.oracle.com/en/java/javase/11/docs/api/ are in named modules.

有人能够让javadoc工作而不必将源版本更改为1.8(如其他论坛中所建议的(吗?我使用的是JDKv11.0.5,这个问题仍然存在(JDK12+也是如此(。

编辑:这个错误源于maven,由mavenjavadoc插件抛出。即使使用<source>8</source>配置,我也无法使它适用于JDK11+。

正如OpenJDK问题跟踪器中所建议的,这可以通过在Javadoc插件上定义源代码来解决:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>8</source>
</configuration>
</plugin>

<detectJavaApiLink>false</detectJavaApiLink>添加到Maven javadoc插件配置中修复错误

我需要Carlos Santos的帮助才能真正做到这一点。包含他的答案的完整配置是:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>8</source>
<detectJavaApiLink>false</detectJavaApiLink>
</configuration>
</plugin>

javadoc生成指向您使用的包的链接,例如指向.../javase/11/docs/api中记录的类的链接。虽然您的注释在一个未命名的模块中,但目标不是,javadoc不能将这两者结合起来。它生成package-listelement-list文件,因此不能将未命名模块(包(与命名模块混合使用。

我没有找到一种方法来限制javadoc试图生成的链接;因此,您可能不得不为自己的项目使用模块。这在我看来很可笑,只是为了让javadoc高兴。我想这只是很多人坚持使用Java8的原因之一。

通过使用新版本的编译器插件并将发布属性设置为8,我能够让自己的项目正常工作。

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>

我也面临同样的问题。我使用的是Java 11.0.3org.apache.maven.plugins:mavenjavadoc-plugin:2.10.4:jar。将mavenjavadoc插件版本更新到3.2.0非常适合我。

我们可以在配置中使用<detectOfflineLinks>false</detectOfflineLinks>

最新更新