[ 
https://issues.apache.org/jira/browse/MCOMPILER-346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tobias Gierke updated MCOMPILER-346:
------------------------------------
    Description: 
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}

  was:
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 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}


> 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
>
>
> 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
(v7.6.3#76005)

Reply via email to