2016-08-10 80 views
1

自從我升級到一個新的Ubuntu安裝16.04,我不能編譯我的任何我安裝的JDK的Java項目,比如這一個:不能編譯Java在Ubuntu 16.04

$ sudo update-alternatives --config java 
There are 4 choices for the alternative java (providing /usr/bin/java). 

    Selection Path           Priority  Status 
------------------------------------------------------------ 
    0   /usr/lib/jvm/java-8-oracle/jre/bin/java   1082  auto mode 
    1   /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081  manual mode 
    2   /usr/lib/jvm/java-8-oracle/jre/bin/java   1082  manual mode 
* 3   /usr/lib/jvm/jdk1.8.0_65/bin/java    100  manual mode 
    4   /usr/lib/jvm/jdk1.8.0_92/bin/java    100  manual mode 

編譯我的maven項目:

$ mvn clean install -DskipTests 

... 
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ 

dearjohn --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 101 source files to /home/ariel/workspace/dearjohn/target/classes 
An exception has occurred in the compiler (1.8.0_65). Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you. 
java.lang.IllegalStateException: endPosTable already set 
    at com.sun.tools.javac.util.DiagnosticSource.setEndPosTable(DiagnosticSource.java:136) 
    at com.sun.tools.javac.util.Log.setEndPosTable(Log.java:350) 
    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:667) 
    at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.<init>(JavacProcessingEnvironment.java:892) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.next(JavacProcessingEnvironment.java:921) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1187) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856) 
    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:125) 
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169) 
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:823) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
    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.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197) 
    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:128) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
    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:497) 
    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] ------------------------------------------------------------------------ 

與我安裝的其他Java版本發生同樣的錯誤。 使用Maven 3.3.9

在Ubuntu 12.04和java build 1.8.0_91-8u91-b14-0ubuntu4〜12.04-b14的遠程盒子上試過它,沒有編譯錯誤。用java 1.8.0_91-8u91-b14-3ubuntu1〜16.04.1-b14嘗試了我的16.04上最接近的東西,得到與上面相同的錯誤。

不同階段的細分結果會導致mvn編譯通過,但mvn包會導致錯誤。

+0

好像你用JDK7或更低檢查與http://stackoverflow.com/questions/36408706/java-lang-illegalstateexception-endpostable-already-set? –

+0

我的項目使用了一些Java 8的功能,所以這不是一種可能性...... –

+0

升級可能與您的環境變量混淆。檢查maven是否使用你喜歡的java版本。你的maven使用版本1.8.0_65。終端返回的「java -version」是什麼? (商標) –

回答

1

這是3.2中的一個bug & 3.3版本的maven-compiler-plugin。

當第二次運行'mvn package'時,先前生成的源目錄會在生成源階段之前添加到源路徑,並導致此解析器異常。

切換回舊版本版本3.2例如,maven-compiler-plugin修復了這個問題。

請注意,增量編譯已在3.0 & 3.1版本的maven-compiler-plugin中損壞。所以,我更喜歡切換2.5.1版本的版本的maven-compiler-plugin。

<dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
</dependency> 
+0

我認爲你的意思是版本3.5.1,而2.5.1是一個錯字。 https://maven.apache.org/plugins/maven-compiler-plugin/dependency-info.html –

+0

你能否鏈接到錯誤報告,以確認這個錯誤在後面的版本中修復? –