[ https://issues.apache.org/jira/browse/MCOMPILER-445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17248680#comment-17248680 ]
Benjamin Marwell edited comment on MCOMPILER-445 at 12/13/20, 10:30 PM: ------------------------------------------------------------------------ [~michael-o] I think I just found the cause. The usual {{mvn}} script will just load a "restricted" java, as they said upstream. In contrast to this, {{javac}} invocation would load some extra modules. I placed a file `.mvn/jvm.config` in the IT directory I created and added the following lines: {quote}{{--add-modules}} {{jdk.javadoc}} {{--add-opens}} {{jdk.javadoc/jdk.javadoc.doclet=ALL-UNNAMED}} {quote} Guess what, it works. So we could "fix" this in maven-core by adding some logic like this: {quote} {code:java} $JAVA_HOME/bin/java -version 2>&1 \ | head -1 \ | grep -qs "\"16" \ && export MAVEN_OPTS="--add-modules jdk.javadoc --add-opens jdk.javadoc/jdk.javadoc.doclet=ALL-UNNAMED" {code} {quote} was (Author: mampf86): [~michael-o] I think I just found the cause. The usual {{mvn}} script will just load a "restricted" java, as they said upstream. In contrast to this, {{javac}} invocation would load some extra modules. I placed a file `.mvn/jvm.config` in the IT directory I created and added the following lines: {quote}{{--add-modules}} {{jdk.javadoc}} {{--add-opens}} {{jdk.javadoc/jdk.javadoc.doclet=ALL-UNNAMED}} {quote} Guess what, it works. So we could "fix" this in maven-core by adding some logic like this: {{$JAVA_HOME/bin/java -version 2>&1 | head -1 | grep -qs "\"16" && export MAVEN_OPTS="--add-modules jdk.javadoc --add-opens jdk.javadoc/jdk.javadoc.doclet=ALL-UNNAMED"}} > Javac error on jdk16 build 18: invalid flag: -Xdoclint:-missing > --------------------------------------------------------------- > > Key: MCOMPILER-445 > URL: https://issues.apache.org/jira/browse/MCOMPILER-445 > Project: Maven Compiler Plugin > Issue Type: Bug > Affects Versions: 3.8.0, 3.8.1 > Environment: Maven 3.6.3 > Compiler-Plugin 3.8.1 > JDK16 since JDK 16 ea b 18 > Reporter: Benjamin Marwell > Assignee: Benjamin Marwell > Priority: Major > Labels: jdk, jdk-javac, jdk16 > > h2. Issue description > When compiling with options {{noFork}} and {{-Xdoclint}}, the compiler plugin > will fail: > > {quote}{{[INFO] > ------------------------------------------------------------------------}} > {{[ERROR] Failed to execute goal > org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile > (pre-compile-jute) on project zookeeper-jute: Fatal error compiling: error: > invalid flag: -Xdoclint:-missing -> [Help 1]}} > {{This is Maven debug:}} > {{[DEBUG] Classpath:}} > {{[DEBUG] /home/eolivelli/dev/zookeeper/zookeeper-jute/target/classes}} > {{[DEBUG] > /home/eolivelli/.m2/repository/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0.jar}} > {{[DEBUG] Source roots:}} > {{[DEBUG] /home/eolivelli/dev/zookeeper/zookeeper-jute/src/main/java}} > {{[DEBUG] > /home/eolivelli/dev/zookeeper/zookeeper-jute/target/generated-sources/java}} > {{[DEBUG] > /home/eolivelli/dev/zookeeper/zookeeper-jute/target/generated-sources/annotations}} > {{[DEBUG] Command line options:}} > {{[DEBUG] -d /home/eolivelli/dev/zookeeper/zookeeper-jute/target/classes > -classpath > /home/eolivelli/dev/zookeeper/zookeeper-jute/target/classes:/home/eolivelli/.m2/repository/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0.jar: > -sourcepath > /home/eolivelli/dev/zookeeper/zookeeper-jute/src/main/java:/home/eolivelli/dev/zookeeper/zookeeper-jute/target/generated-sources/java:/home/eolivelli/dev/zookeeper/zookeeper-jute/target/generated-sources/annotations: > -s > /home/eolivelli/dev/zookeeper/zookeeper-jute/target/generated-sources/annotations > -g --release 8 -encoding UTF-8 -Werror -Xlint:deprecation -Xlint:unchecked > -Xlint:-options -Xdoclint:-missing -Xpkginfo:always}} > {{[DEBUG] incrementalBuildHelper#beforeRebuildExecution}} > {{[INFO] Compiling 36 source files to > /home/eolivelli/dev/zookeeper/zookeeper-jute/target/classes}}{quote} > But -Xdoclint is a valid option. > h2. Cause > Without forking, maven runs {{javac}} using > {{com.sun.tools.javac.api.JavacTool}}. The module is not loaded. > h2. Proposed solution > From the mailing list: > When running the compiler in noFork mode, use the ToolProvider to run Javac > in the same VM on Java9+. This can be implemented using multi-release-jars. > See the {{maven-jlink-plugin}} as a reference. > h2. Related > [Move Doclint to jdk.javadoc > module|https://bugs.openjdk.java.net/browse/JDK-8252712] -- This message was sent by Atlassian Jira (v8.3.4#803005)