使用java 1.8特性编译代码时javac崩溃:Flow $ AbstractAssignAnalyzer.visitIdent(Flow.java:2380)

时间:2014-11-17 11:56:26

标签: java java-8 javac

最近我将我的java代码升级到1.8并应用了许多1.8功能(lambda,stream等)。它们可以在Eclipse下正常运行但无法由maven构建,因为javac总是抛出以下异常:

[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

到目前为止,我还没有找到导致javac崩溃的java类。现在由maven构建的项目被推送到github:https://github.com/xqbase/chess-wizard-base.git

我应该将此问题报告给Java Developer Connection吗?

2 个答案:

答案 0 :(得分:1)

在解决javac问题或plexus-compiler-eclipse支持jdk 1.8之前,使用xqbase-compiler-eclipse作为传递maven编译的解决方法:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <compilerId>eclipse</compilerId>
                <optimize>true</optimize>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>com.xqbase</groupId>
                    <artifactId>xqbase-compiler-eclipse</artifactId>
                    <version>0.1.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

此插件已推送到https://github.com/xqbase/compiler-eclipse

答案 1 :(得分:0)

plexus-compiler-eclipse 2.5 现在支持jdk 1.8。将maven编译器插件添加到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>