2015-01-29 3 views
4

내가이 환경에서 내 코드를 컴파일하기 위해 노력하고있어 :컴파일에서 이상한 NullPointerException이 자바 8 (컴파일러 (1.8.0_31))

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T19:29:23+02:00) 
Maven home: /usr/local/sbin/apache-maven-3.2.5 
Java version: 1.8.0_31, vendor: Oracle Corporation 
Java home: /usr/local/sbin/jdk1.8.0_31/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.16.0-23-generic", arch: "amd64", family: "unix" 

NullPointerExceptioncom.sun.tools.javac.code.Types.isConvertible()

에서 발생합니다 나는했습니다 이 예외가 버그로보고되었음을 알았지 만이를 피하기 위해 수행해야 할 작업을 찾을 수 없습니다 (아마도 Java 또는 Maven의 다른 버전을 사용합니까?)

아무도 실마리가 있습니까?

[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ tnet --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 1358 source files to /tradair/sources/java/target/classes 
An exception has occurred in the compiler (1.8.0_31). 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.code.Types.isConvertible(Types.java:290) 
    at com.sun.tools.javac.comp.Check.assertConvertible(Check.java:922) 
    at com.sun.tools.javac.comp.Check.checkMethod(Check.java:876) 
    at com.sun.tools.javac.comp.Attr.checkMethod(Attr.java:3838) 
    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.visitSelect(Attr.java:3370) 
    at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:607) 
    at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1843) 
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:607) 
    at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1704) 
    at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1384) 
    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.attribStats(Attr.java:692) 
    at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1142) 
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909) 
    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.visitMethodDef(Attr.java:1035) 
    at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778) 
    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:170) 
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:684) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:118) 
    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:355) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160) 
    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: 24.622 s 
[INFO] Finished at: 2015-01-29T10:51:50+02:00 
[INFO] Final Memory: 34M/509M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project tnet: 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. 
+4

1) 다른 사람이 버그를 제기했다 있는지 확인합니다. 2) 그렇지 않으면 버그를 신고하십시오. –

답변

6

이 오픈 JDK의 이전 버전에서 known bug입니다 :

은 스택 트레이스입니다. 분명히 거기에서 해결되었으므로 최소한 8u40으로 업데이트해야합니다.

0

또한 this bug인데 해결되지 않은 것으로 표시 될 수 있습니다. (그러나 이것은 Quirliom이 OpenJDK 추적기에서 발견 한 것과 같은 버그 일 수 있습니다 ... "버그 데이터베이스"사람들은 중복이 있음을 눈치 채지 못했습니다)

+0

분명히 중복 된 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8044546 – Holger

0

Quirliom이 말했듯이 컴파일러의 나쁜 버그입니다 . 문제가되는 코드를 찾을 수 있다면 람다를 변수에 할당하여 문제를 해결할 수 있습니다. FunctionalJava가 여러 번 실행되었습니다 (예 : https://github.com/functionaljava/functionaljava/issues/76). 우리는이 같은 문제를 코드 주위에 일 :

return foldLeft((i, a) -> i + 1, 0);

을 변수에 할당 :

F2<Integer, A, Integer> f = (i, a) -> i + 1; return foldLeft(f, 0);