[
https://issues.apache.org/jira/browse/MCOMPILER-346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17476053#comment-17476053
]
Andrei Rebegea commented on MCOMPILER-346:
------------------------------------------
How do I upvote this defect to be fixed ? It is embarrassing...
D:\proj>mvn --version
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: D:\maven
Java version: 11.0.12, vendor: Eclipse Foundation, runtime: D:\openJDK11
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
D:\proj>java --version
openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)
> JDK10: Compiler plugin trips AssertionError inside javac when using
> javax.tools API
> -----------------------------------------------------------------------------------
>
> Key: MCOMPILER-346
> URL: https://issues.apache.org/jira/browse/MCOMPILER-346
> Project: Maven Compiler Plugin
> Issue Type: Bug
> Affects Versions: 3.7.0
> Reporter: Tobias Gierke
> Priority: Major
> Attachments: log.txt, sample_project.tgz
>
>
> Maven 3.5.3, 64-bit linux, Oracle JDK 10.0.1
> Compilation fails with a crash inside javac *unless* the
> maven-compiler-plugin is configured with
> {code:java}
> <forceJavacCompilerUse>true</forceJavacCompilerUse>{code}
> I had a brief look at the sources of Modules.java in the current OpenJDK10
> and it looks like this is the assertion that gets tripped (line numbers do
> not match exactly but it's close enough):
> {code:java}
> public boolean enter(List<JCCompilationUnit> trees, ClassSymbol c) {
> Assert.check(rootModules != null || inInitModules || !allowModules);
> return enter(trees, modules -> {}, c);
> }
> {code}
> Since the crash does not happen when invoking the compiler using commandline
> arguments I suspect the plugin does something unexpected with the javax.tools
> JavaCompiler API that later trips the exception.
> Unfortunately this is a commercial project so I cannot provide a test case :(
> The project itself is a JDK8 project we're currently migrating to JDK10 and
> while the project itself has no module-info files some of our dependencies do
> (at least Automatic-Module-Name gets set in their manifests).
> I'll attach the output of a compile run with the '-verbose' option to this
> ticket.
> Plugin configuration:
> {code:java}
> <build>
> <plugins>
> <plugin>
> <artifactId>maven-compiler-plugin</artifactId>
> <version>3.7.0</version>
> <configuration>
> <source>10</source>
> <target>10</target>
> <release>10</release>
> <!-- <forceJavacCompilerUse>true</forceJavacCompilerUse> -->
> <compilerArgs>
> <arg>-Werror</arg>
> <arg>-verbose</arg>
> </compilerArgs>
> </configuration>
> </plugin>
> </plugins>
> </build>
> {code}
> Exception:
> {code:java}
> Exception in thread "main" java.lang.AssertionError
> at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
> at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
> at
> jdk.compiler/com.sun.tools.javac.comp.Modules.enter(Modules.java:244)
> at
> jdk.compiler/com.sun.tools.javac.main.JavaCompiler.readSourceFile(JavaCompiler.java:829)
> at
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ImplicitCompleter.complete(JavacProcessingEnvironment.java:1506)
> at
> jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)
> at
> jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1308)
> at
> jdk.compiler/com.sun.tools.javac.code.Type$ClassType.complete(Type.java:1139)
> at
> jdk.compiler/com.sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.java:1065)
> at
> jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:237)
> at
> jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:52)
> at
> jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:992)
> at
> jdk.compiler/com.sun.tools.javac.code.Printer.visit(Printer.java:136)
> at
> jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:197)
> at
> jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:165)
> at
> jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
> at
> jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
> at
> jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:183)
> at
> jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:165)
> at
> jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
> at
> jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
> at
> jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.getMessage(JCDiagnostic.java:771)
> at
> jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.getMessage(ClientCodeWrapper.java:799)
> at
> org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:131)
> at
> org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
> at
> org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
> at
> org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
> at
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
> at
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:564)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)