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(如其他论坛中的建议)?我使用的是 JDK v11.0.5,问题仍然存在(对于 JDK 12+ 也是如此)。
编辑:此错误源自 maven,并由 maven-javadoc-plugin 引发。即使使用
<source>8</source>
配置,我也无法使其适用于 JDK 11+。
正如 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 插入配置修复错误
<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-list
或
element-list
文件,因此您不能将未命名模块(包)与命名模块混合在一起。我没有找到限制 javadoc 尝试生成的链接的方法;所以你可能必须为你自己的项目使用模块。这对我来说似乎很荒谬,只是为了让 javadoc 高兴。我想这只是这么多人坚持使用 Java 8 的原因之一。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>8</source>
<detectJavaApiLink>false</detectJavaApiLink>
</configuration>
</plugin>
但无论如何我得到了warning: The code being documented uses packages in the unnamed module, but the packages defined in /apidocs/ are in named modules.
pom.xml
中我有6个模块(作为依赖项),但在
module-info.java
中我只有5个模块的
requires
。所以,javadoc 认为一个模块是
unnamed
。
Java 11.0.3 和 org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar。将 maven-javadoc-plugin 版本更新到 3.2.0 对我来说非常有效。
<detectOfflineLinks>false</detectOfflineLinks>
。