2012-03-19 192 views
1

我在啓動像mvn clean compile這樣的Hudson作業時遇到了跟隨錯誤。編譯錯誤:執行javac失敗,但無法解析錯誤

[INFO] Compiling 1541 source files to /users/applis/33g/ad33gwas/.hudson/jobs/sonar facade-commande/workspace/facade-commande/target/classes 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] Failure executing javac, but could not parse the error: 
An exception has occurred in the compiler (1.5.0_12). 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.AssertionError 

你對這個問題有什麼理由嗎?

+0

安裝的Java版本? – Viruzzo 2012-03-19 10:40:38

+0

顯示您的JAVA_HOME – Ilya 2012-03-19 10:43:03

+1

嘗試啓用啓用完全調試日誌記錄的Maven('mvn -e -X clean compile')。然後用你獲得的信息更新你的問題。 – sleske 2012-03-19 10:45:38

回答

0

我有過這個問題多次。編譯器甚至會報告一個錯誤,因爲在我的情況下它並沒有這樣做,而且Maven以後失敗時會出現一些不可理解的錯誤。

最終,我發現編譯器沒有很好地處理一些複雜的輸入(類似<A extends MyObject<A1,A2>, A1 extends MyObject2<A2>, A2 extends MyObject3>)。更新JVM可能會解決您的問題,但也可能隨着代碼的發展而再次出現問題。似乎這些錯誤在JDK-7中已經消失,但我無法確定。

無論如何,一個解決方案是使用備用的編譯器爲您的代碼(如第谷),你可以像下面這樣做在你的pom.xml(無論是在構建 - >插件或建立 - > pluginManagement - >插件):

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${compiler.source}</source> 
        <target>${compiler.target}</target> 
        <encoding>${source.encoding}</encoding> 
        <fork>false</fork> 
        <compilerId>jdt</compilerId> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>org.eclipse.tycho</groupId> 
         <artifactId>tycho-compiler-jdt</artifactId> 
         <version>0.13.0</version> 
        </dependency> 
       </dependencies> 
      </plugin> 

如果您使用的是Eclipse和M2E 1.0或以上,你會得到一個錯誤,但是你可以通過添加下面的代碼片段到你的pom.xml(在建擺脫它 - > pluginManagement - >插件):

  <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-compiler-plugin</artifactId> 
            <versionRange>[2.0,)</versionRange> 
            <goals> 
             <goal>compile</goal> 
             <goal>testCompile</goal> 
            </goals> 
            <parameters> 
             <compilerId>jdt</compilerId> 
            </parameters> 
           </pluginExecutionFilter> 
           <action> 
            <configurator> 
             <id>org.eclipse.m2e.jdt.javaConfigurator</id> 
            </configurator> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 

相當難看,問題已上報M2E開發商而T3嘿不認爲這是一個優先事項,所以你必須忍受它

4

你遇到了一個編譯器錯誤。目前還不清楚它可能是哪個bug,但很有可能通過升級到更高版本的JDK來修復它。 (你顯然正在運行java 1.5.0_u12,這是相當古老的版本。最後一個可免費獲得的Java 1.5補丁版本是java 1.5.0_u22,更新版本是1.5版本(1.5.0._u34)。對於擁有Java for Business訂閱的用戶,或者可以升級到Java 1.6或1.7。)

+0

使用jdk 1.8_4X,我升級到1.8_51,但我仍然看到這個錯誤:'執行javac失敗,但無法解析錯誤: /bin/sh:c:/progra~1/java/jdk1.6.0_24/bin/javac:沒有這樣的文件或目錄# – 2015-07-14 19:43:57

+0

@KevinMeredith - 看看錯誤消息。仔細閱讀。爲什麼它談論一個JDK 1.6安裝?你的哈德森配置中的東西是指一箇舊的Java安裝(我猜測)不再存在。找到它發生的地方,你有95%的人解決了這個問題。 – 2015-07-14 22:33:14

相關問題