Search code examples
javajava-8javac

javac crashes when compiling codes with java 1.8 features: Flow$AbstractAssignAnalyzer.visitIdent(Flow.java:2380)


Recently I upgraded my java codes to 1.8 and applied many 1.8 features (lambda, stream, etc). They can be run properly under Eclipse but failed to be built by maven because javac always threw the following exception:

[INFO] Compiling 38 source files to /root/chess-wizard-base/target/classes

An exception has occurred in the compiler (1.8.0_25). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report.  Thank you.
java.lang.NullPointerException
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.visitIdent(Flow.java:2380)
    at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
    at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:398)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.scan(Flow.java:1376)
    at com.sun.tools.javac.tree.TreeScanner.visitReference(TreeScanner.java:268)
    at com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1973)
    at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:398)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.scan(Flow.java:1376)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.scanExpr(Flow.java:1627)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.scanExprs(Flow.java:1639)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.visitNewClass(Flow.java:2241)
    at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
    at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:398)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.scan(Flow.java:1376)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.analyzeTree(Flow.java:2423)
    at com.sun.tools.javac.comp.Flow$AbstractAssignAnalyzer.analyzeTree(Flow.java:2406)
    at com.sun.tools.javac.comp.Flow.analyzeLambdaThrownTypes(Flow.java:250)
    at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2423)
    at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1624)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:607)
    at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:284)
    at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:245)
    at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:232)
    at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:993)
    at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:826)
    at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:731)
    at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:835)
    at com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:162)
    at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:564)
    at com.sun.tools.javac.comp.Resolve.checkMethod(Resolve.java:601)
    at com.sun.tools.javac.comp.Attr.checkMethod(Attr.java:3809)
    at com.sun.tools.javac.comp.Attr.checkIdInternal(Attr.java:3615)
    at com.sun.tools.javac.comp.Attr.checkMethodIdInternal(Attr.java:3522)
    at com.sun.tools.javac.comp.Attr.checkMethodId(Attr.java:3501)
    at com.sun.tools.javac.comp.Attr.checkId(Attr.java:3488)
    at com.sun.tools.javac.comp.Attr.visitNewClass(Attr.java:2074)
    at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:607)
    at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:649)
    at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1093)
    at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:607)
    at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:676)
    at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4342)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4252)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4181)
    at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4156)
    at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
    at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
    at com.sun.tools.javac.main.Main.compile(Main.java:523)
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:785)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    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)
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] An unknown compilation problem occurred
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:12 min
[INFO] Finished at: 2014-11-17T18:26:49+08:00
[INFO] Final Memory: 16M/51M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project chess-wizard-base: Compilation failure
[ERROR] An unknown compilation problem occurred
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

I have not found out the java class that makes javac crash so far. Now the project to be built by maven is pushed onto github: https://github.com/xqbase/chess-wizard-base.git .

Should I report this issue into Java Developer Connection ?


Solution

  • plexus-compiler-eclipse 2.5 supports jdk 1.8 now. Add the maven compiler plugin into pom:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <compilerId>eclipse</compilerId>
                    <optimize>true</optimize>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.plexus</groupId>
                        <artifactId>plexus-compiler-eclipse</artifactId>
                        <version>2.5</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>