【问题标题】:JDK 11+ and JavadocJDK 11+ 和 Javadoc
【发布时间】:2020-03-12 21:26:20
【问题描述】:
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+。

【问题讨论】:

  • 我认为这个问题需要更多细节。你用maven吗?您是否在项目中使用或尝试过使用模块?
  • @rü- 你说得对,我已经更新了帖子,谢谢。是的,我正在使用具有多模块设置的 Maven。

标签: java maven javadoc java-11 maven-javadoc-plugin


【解决方案1】:

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

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

【讨论】:

  • 我完全同意。此外,如果 maven-javadoc-plugin 能够告诉哪些模块未命名,这将很有帮助,这样您就可以在一个非常大的项目中追踪问题。它还可以提供一个选项来忽略聚合中未命名的模块。情况似乎并非如此:maven.apache.org/plugins/maven-javadoc-plugin/…
  • @Jörg 是的,这一切都非常烦人不是吗?
【解决方案2】:

作为suggested in OpenJDK issue tracker,这可以通过在 Javadoc 插件上定义源代码来解决:

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

【讨论】:

  • 可能您没有完整阅读问题。 OP已经明确提到:Has anyone been able to make javadoc work without having to change the source version to 1.8
  • 它对我有用。我使用: ${java.version} 在属性中它是 java 11。出于某种原因,我只需要指定版本。
  • 如何在 Gradle 中做到这一点?
  • 使用 JDK 8 时,我将其设置为 1.8,而不是 8。也许两者都可以。
  • 也建议作为bugs.java.com/bugdatabase/view_bug.do?bug_id=8212233中的解决方案
【解决方案3】:

在Maven javadoc插件配置中添加&lt;detectJavaApiLink&gt;false&lt;/detectJavaApiLink&gt;修复错误

【讨论】:

  • 这对我在 Mac 上使用 AdoptOpenJDK 11.0.8 (2020-07-14) 有效。我已经设置了&lt;source&gt;8&lt;/source&gt;,它适用于其他版本的 JDK 11,但不适用于 11.0.8。
【解决方案4】:

我也面临同样的问题。我使用的是 Java 11.0.3org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar。将 maven-javadoc-plugin 版本更新到 3.2.0 对我来说非常有效。

【讨论】:

  • 我正在使用 maven-javadoc-plugin 版本 3.2.0 并得到这个错误。所以这并不能解决问题。
  • @Jörg 您使用的是哪个 Java 版本?
  • 我的Java版本是11.0.5+10
【解决方案5】:

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

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

【讨论】:

  • 谢谢。即使没有&lt;source&gt;8&lt;/source&gt;,上面的sn-p仍然对我有用,结合&lt;properties&gt;maven.compiler.source&gt;11&lt;/maven.compiler.source&gt;&lt;maven.compiler.target&gt;11&lt;/maven.compiler.target&gt;&lt;/properties&gt;
【解决方案6】:

我们可以在配置中使用&lt;detectOfflineLinks&gt;false&lt;/detectOfflineLinks&gt;

【讨论】:

    【解决方案7】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 2020-06-16
      • 2015-07-06
      • 2019-11-13
      • 2019-03-03
      • 1970-01-01
      • 2019-05-19
      • 2019-04-25
      相关资源
      最近更新 更多