JDK 11+ 和 Javadoc

问题描述 投票:0回答:8
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+。

java maven javadoc java-11 maven-javadoc-plugin
8个回答
52
投票

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

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

32
投票

<detectJavaApiLink>false</detectJavaApiLink>

 添加到 Maven javadoc 插入配置修复错误


25
投票
我需要 Carlos Santos 的帮助才能让这一切真正发挥作用。包含他的答案的完整配置是:

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

6
投票

javadoc 生成您使用的包的链接,例如到 .../javase/11/docs/api

 中记录的类。虽然您的注释位于未命名的模块中,但目标不是,并且 javadoc 无法将这两者结合起来。它会生成 
package-list
element-list
 文件,因此您不能将未命名模块(包)与命名模块混合在一起。

我没有找到限制 javadoc 尝试生成的链接的方法;所以你可能必须为你自己的项目使用模块。这对我来说似乎很荒谬,只是为了让 javadoc 高兴。我想这只是这么多人坚持使用 Java 8 的原因之一。


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

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

0
投票
我试过了

<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


-2
投票
我也面临着同样的问题。我使用的是

Java 11.0.3org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar。将 maven-javadoc-plugin 版本更新到 3.2.0 对我来说非常有效。


-3
投票
我们可以在配置中使用

<detectOfflineLinks>false</detectOfflineLinks>

© www.soinside.com 2019 - 2024. All rights reserved.