【问题标题】:javadoc fail when using jdk12 to build language-level 9 javadoc使用 jdk12 构建语言级别 9 javadoc 时 javadoc 失败
【发布时间】:2019-06-01 19:14:00
【问题描述】:

我正在使用 jdk 12 构建语言级别 9 的 maven 项目。 编译可以成功,但无法正确生成javadoc。

简而言之,错误代码是:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar (default) on project commonx: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/9/docs/api/ are in the unnamed module.

代码在https://github.com/XenoAmess/commonx/tree/3d875ee71ba1712b1b2bf76e89af08c5683fe57d

travis-ci 在https://travis-ci.org/XenoAmess/commonx/builds/540181778

我可以用 jdk9 或 10 做到这一点,但我找不到可以正确构建这个 javadoc 的 jdk 12。 我试过zulu,oracle open jdk,adopt open jdk,amazon-corretto(11),都是我能拿到的最新二进制版本。

我用的是win10 x64,但是根据travis-ci的报告,应该不是系统造成的,因为我在travis上使用的是linux x64。

如果有人可以使用任何 jdk 12 获得“maven install”,请告诉我该怎么做。

真诚的感谢。


更新:2019/06/03

我们将语言级别更改为 8。

然后它可以正确构建javadoc(在AdoptOpenJDK12上)

不知道为什么。

https://travis-ci.org/XenoAmess/commonx/builds/540461237

那好吧。

在他们修复 OpenJDK 中的错误之前,我们将保持在语言级别 8。

(但是这个库的某些部分将无法在 jre 8 上运行......无论如何。)

【问题讨论】:

  • 首先我建议使用 JDK9+ 的所有插件的最新版本(例如 maven-compiler-plugin)...为什么要在代码中复制类而不是将它们用作依赖项(这会为以后的用户产生许多问题)等。
  • @khmarbaise 1. 我认为 maven-compiler-plugin 在这里没有问题,无法构建的是 javadoc。 2.请告诉我什么是“JDK9+ 插件”,以及为什么您认为使用“JDK9+ 插件”将有助于jdk12 构建javadoc。 3.“复制类”实际上是扩展的util类,因此很有用。即使不是,这与我在这里提出的问题无关。
  • 当您比较 JDK 11 的文档目录树和 JDK 9 或 10 的目录树时,您会注意到结构发生了变化。即,现在有模块的子目录。似乎 JDK 11+ javadoc 总是期望使用模块的软件的新子目录。更改为语言级别 8 会有效地禁用模块。由于 JDK 9 和 10 应该是已经达到生命周期的中间版本,因此尚不清楚是否可以期望针对这些版本进行修复。

标签: java maven maven-3 java-9 java-12


【解决方案1】:

对于那些在谷歌上搜索此错误的人的更新: 如果项目使用源/目标 8,在 javadoc 配置中添加 8 应该可以使项目能够在 jdk {11、12、13} 上构建:

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

【讨论】:

    【解决方案2】:

    您可以在 ma​​ven-javadoc-plugin

    的配置中添加以下行

    &lt;detectJavaApiLink&gt;false&lt;/detectJavaApiLink&gt;

    【讨论】:

      猜你喜欢
      • 2016-05-27
      • 2019-10-14
      • 2016-05-01
      • 2015-06-13
      • 2014-08-29
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多