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