[
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)