maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Heinz Marbaise (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MCOMPILER-346) JDK10: Compiler plugin trips AssertionError inside javac when using javax.tools API
Date Thu, 28 Jun 2018 16:03:00 GMT

    [ https://issues.apache.org/jira/browse/MCOMPILER-346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16526466#comment-16526466
] 

Karl Heinz Marbaise commented on MCOMPILER-346:
-----------------------------------------------

Can you create an example project which shows the problem?

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

Mime
View raw message