JDK 11+和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(如其他论坛中所建议)吗?我使用的是JDK v11.0.5,问题仍然存在(JDK 12+也是如此)。

编辑:此错误起源于maven,由maven-javadoc-plugin抛出。即使使用<source>8</source>配置,我也无法使其适用于JDK 11+。

sothis2000 回答:JDK 11+和Javadoc

作为suggested in OpenJDK issue tracker,可以通过在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>
,

Java 9起,使用Doclet API发生了重大的重大突破更改

  

JEP 221: Simplified Doclet API
  用新的简化的API替换旧的Doclet API,并利用现有的其他标准API。标准doclet已被重写为使用新的Doclet API

     

现有的API和旧的标准doclet可用,但是尚未更新为支持模块等新语言功能

旧API使用的是com.sun.javadoc

  

Doclet API(也称为Javadoc API)为客户端提供了一种机制来检查程序和库的源代码级结构,包括源代码中嵌入的javadoc注释。

您可以尝试使用新的Doclet API,请参见examples

public class BasicDoclet implements Doclet {
@Override
public void init(Locale locale,Reporter reporter) {  }
@Override
public String getName() {
    // For this doclet,the name of the doclet is just the
    // simple name of the class. The name may be used in
    // messages related to this doclet,such as in command-line
    // help when doclet-specific options are provided.
    return getClass().getSimpleName();
}
,

javadoc生成指向您使用的软件包的链接,例如.../javase/11/docs/api中记录的类。当您的注释位于一个未命名的模块中时,目标则不是,而javadoc不能将这两者结合在一起。它会生成package-listelement-list文件,因此您不能将未命名的模块(程序包)与已命名的模块混合使用。

我没有找到一种方法来限制javadoc试图产生的链接。因此您可能必须为自己的项目使用模块。这对我来说似乎很荒谬,只是为了使javadoc开心。我想这只是许多人坚持使用Java 8的原因之一。

,

我面临着同样的问题。我正在使用 Java 11.0.3 org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar 。将maven-javadoc-plugin版本更新为 3.2.0 对我来说很完美。

,

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

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
</plugin>

<properties>
    <maven.compiler.release>8</maven.compiler.release>
</properties>
,

我有这个问题,因为我使用 module-info.test 方法对 Java 9 模块进行单元测试。

简单地排除测试的 javadoc 生成就为我解决了这个问题。

                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                            <report>test-javadoc</report>
                        </reports>
                    </reportSet>

只需删除 test-javadoc 报告。

,

我们可以在配置中使用showtext_auto()

本文链接:https://www.f2er.com/3110227.html

大家都在问