Sources read from classpath JARs cause errors during compilation
dawid.weiss at gmail.com
Mon Jan 13 17:31:30 UTC 2020
Here is another gem I discovered while porting an ant build to gradle.
Applies to Java 11-14. Say you're compiling class Bat like this:
javadoc -classpath p2.jar -d tmp p3/bat/Bat.java
p2 contains class Baz which Bat imports. Baz in turn has a reference
to a class not on classpath (annotation, for example).
The runtime behavior now forks into two scenarios:
1) p2 contains just Baz.class: compilation succeeds, documentation is generated.
1) p2 contains Baz.class AND Baz.java (sources inside the archive):
javadoc fails with something like this:
Loading source file p3\bat\Bat.java...
Constructing Javadoc information...
error: package bar does not exist
error: cannot find symbol
symbol: class Bar
Note the error message refers to the source file from classpath (!),
not javadoc's source path.
This causes grief when you don't have control over classpath entries.
In Lucene's case it's this one:
error: package org.apache.yetus.audience does not exist
A repro code for the above is attached to the Lucene issue at 
(can't send attachments from gmail).
More information about the javadoc-dev