You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Karl Heinz Marbaise (JIRA)" <ji...@apache.org> on 2018/07/25 17:25:00 UTC

[jira] [Commented] (MCOMPILER-346) JDK10: Compiler plugin trips AssertionError inside javac when using javax.tools API

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

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

The first thing I get is the following warning by using {{mvn clean}}
{noformat}
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.voipfuture.testproject:testproject:jar:1.2.15-SNAPSHOT
[WARNING] Reporting configuration should be done in <reporting> section, not in maven-site-plugin <configuration> as reportPlugins parameter. @ line 1046, column 24
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
{noformat}
Furthermore I get:
{noformat}
[WARNING] The POM for org.springframework:spring-jdbc:jar:4.1.6.RELEASE_patched2 is missing, no dependency information available
{noformat}

Why is the maven-reactor-plugin in the plugin list? This does not make sense...
Apart from that you are mixing versions of maven-surefire/maven-failsafe ..why add a dependency to surefire junit-47 which is usually not needed..
An explude for {{*IT.java}} in maven-surefire-plugin is not needed cause it's default...

BTW: Is this pom file in the test project your real hand crafted one ? It does not look like so?

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