JDK 11+ and Javadoc

JavaMavenJavadocJava 11Maven Javadoc-Plugin

Java Problem Overview


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.

Has anyone been able to make javadoc work without having to change the source version to 1.8 (as suggested in other forums)? I'm using JDK v11.0.5 and the issue still present (also with JDK 12+).

Edit: This error originated from maven and thrown by the maven-javadoc-plugin. I have not been able to make it work for JDK 11+ even with the <source>8</source> configuration.

Java Solutions


Solution 1 - Java

As suggested in OpenJDK issue tracker this can be worked around with defining source on Javadoc plugin:

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

Solution 2 - Java

Adding <detectJavaApiLink>false</detectJavaApiLink> to the Maven javadoc pluging configuration fix the error

Solution 3 - Java

I needed the bit from Carlos Santos to make this really work. The complete config that incorporates his answer is:

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

Solution 4 - Java

javadoc produces links to packages you use, e.g. to classes documented in .../javase/11/docs/api. While your comments are in an unnamed module, the targets are not, and javadoc can't combine those two. It produces either a package-list or an element-list file, so you can't mix unnamed modules (packages) with named modules.

I didn't find a way to limit the links that javadoc tries to produce; so you may have to use modules for your own project. This seems ridiculous to me, just to make javadoc happy. I guess this is just one of the reasons that so many people stick to Java 8.

Solution 5 - Java

I was able to get my own project to work by using a new version of the compiler plugin and setting the release property to 8.

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

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

Solution 6 - Java

I was facing the same issue. I was using Java 11.0.3 and org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar. Updating the maven-javadoc-plugin version to 3.2.0 worked perfectly for me.

Solution 7 - Java

We can use <detectOfflineLinks>false</detectOfflineLinks> in the configuration.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRafael IbascoView Question on Stackoverflow
Solution 1 - JavaRoman GrigoriadiView Answer on Stackoverflow
Solution 2 - JavaCarlos SaltosView Answer on Stackoverflow
Solution 3 - JavaScott SeelyView Answer on Stackoverflow
Solution 4 - Javarü-View Answer on Stackoverflow
Solution 5 - JavaRobinView Answer on Stackoverflow
Solution 6 - JavaChinmay KulkarniView Answer on Stackoverflow
Solution 7 - Javanagachandra immadisettyView Answer on Stackoverflow