[ https://issues.apache.org/jira/browse/MJAVADOC-677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anand Beh updated MJAVADOC-677: ------------------------------- Description: Depending on a module using "requires static transitive", and then depending on that module, breaks javadoc execution. *Summary* Module org.checkerframework.checker.qual exists. Module A "requires static transitive org.checkerframework.checker.qual" * Running the javadoc plugin on module A always succeeds. Module B requires module A. * Running the javadoc plugin on module B fails with "module not found: org.checkerframework.checker.qual" This happens only when Module A uses "requires static transitive" on an automatic module. If Module A "requires" or "requires transitive" or "requires static" checker-qual, the javadoc succeeds on Module B. It does not matter whether checker-qual is an automatic module or a full module. The reproducer includes hsqldb 2.6.0 which is a full module, and the same error occurs. *Reproducer* Attached. Also posted at [https://github.com/A248/MJAVADOC-677] *Cause* In target/apidocs/options, the javadoc plugin places checker-qual on the classpath with "--class-path". If checker-qual is placed on the module-path, javadoc execution succeeds. This is demonstrated by editing the options file to place checker-qual on the module path, and running "javadoc @options @argfile". The issue looks like it stems from plexus-java's LocationManager which returns a module-path consisting of required modules but ignoring statically-required modules: [https://github.com/codehaus-plexus/plexus-languages/blob/c1c07b59179bfafd3e80ce82ddd53dae1b2867a7/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java#L405] *General Solution* Modules specified by "requires static transitive" need to be replaced on the module-path rather than class-path. was: Depending on a module using "requires static transitive", and then depending on that module, breaks javadoc execution. *Summary* Module org.checkerframework.checker.qual exists. Module A "requires static transitive org.checkerframework.checker.qual" * Running the javadoc plugin on module A always succeeds. Module B requires module A. * Running the javadoc plugin on module B fails with "module not found: org.checkerframework.checker.qual" This happens only when Module A uses "requires static transitive" on an automatic module. If Module A "requires" or "requires transitive" or "requires static" checker-qual, the javadoc succeeds on Module B. It does not matter whether checker-qual is an automatic module or a full module. The reproducer includes hsqldb 2.6.0 which is a full module, and the same error occurs. *Reproducer* Attached. *Cause* In target/apidocs/options, the javadoc plugin places checker-qual on the classpath with "--class-path". If checker-qual is placed on the module-path, javadoc execution succeeds. This is demonstrated by editing the options file to place checker-qual on the module path, and running "javadoc @options @argfile". The issue looks like it stems from plexus-java's LocationManager which returns a module-path consisting of required modules but ignoring statically-required modules: [https://github.com/codehaus-plexus/plexus-languages/blob/c1c07b59179bfafd3e80ce82ddd53dae1b2867a7/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java#L405] *General Solution* Modules specified by "requires static transitive" need to be replaced on the module-path rather than class-path. > Using "requires static transitive" makes javadoc goal fail > ---------------------------------------------------------- > > Key: MJAVADOC-677 > URL: https://issues.apache.org/jira/browse/MJAVADOC-677 > Project: Maven Javadoc Plugin > Issue Type: Bug > Components: javadoc > Affects Versions: 3.2.0 > Environment: Zulu JDK 16.28+11-CA (build 16+36) > Mac OS 10.14.6 > Reporter: Anand Beh > Priority: Major > Attachments: Javadoc-Modulepath.zip > > > Depending on a module using "requires static transitive", and then depending > on that module, breaks javadoc execution. > *Summary* > Module org.checkerframework.checker.qual exists. > Module A "requires static transitive org.checkerframework.checker.qual" > * Running the javadoc plugin on module A always succeeds. > Module B requires module A. > * Running the javadoc plugin on module B fails with "module not found: > org.checkerframework.checker.qual" > This happens only when Module A uses "requires static transitive" on an > automatic module. If Module A "requires" or "requires transitive" or > "requires static" checker-qual, the javadoc succeeds on Module B. > It does not matter whether checker-qual is an automatic module or a full > module. The reproducer includes hsqldb 2.6.0 which is a full module, and the > same error occurs. > *Reproducer* > Attached. Also posted at [https://github.com/A248/MJAVADOC-677] > *Cause* > In target/apidocs/options, the javadoc plugin places checker-qual on the > classpath with "--class-path". > If checker-qual is placed on the module-path, javadoc execution succeeds. > This is demonstrated by editing the options file to place checker-qual on the > module path, and running "javadoc @options @argfile". > The issue looks like it stems from plexus-java's LocationManager which > returns a module-path consisting of required modules but ignoring > statically-required modules: > [https://github.com/codehaus-plexus/plexus-languages/blob/c1c07b59179bfafd3e80ce82ddd53dae1b2867a7/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java#L405] > *General Solution* > Modules specified by "requires static transitive" need to be replaced on the > module-path rather than class-path. -- This message was sent by Atlassian Jira (v8.3.4#803005)