2013-02-18 63 views
11

我有一個Jenkins服務器,JDK & JRE 6和7安裝在一起。Maven/Jenkins java.lang.UnsupportedClassVersionError:不支持的major.minor版本51.0

所有的項目都建立在1.6以外,1.7是依賴的項目。

我已配置maven pom文件以使用JAVA_HOME_7環境PATH中的Java編譯器。

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
        **<executable>${env.JAVA_HOME_7}/bin/javac</executable>** 
        <fork>true</fork> 
        <verbose>false</verbose> 
       </configuration> 
      </plugin> 

MVN在安裝過程中,我發現了以下錯誤:

java.lang.RuntimeException: There was an error in the forked process 
java.lang.UnsupportedClassVersionError: : Unsupported major.minor version 51.0 

我認爲這意味着服務器使用JRE 1.6。

如何將JRE 1.6與1.7保持一致,以保持與舊1.6項目和新1.7項目的兼容性?

非常感謝, 阿塔納斯

+0

也許你正在運行一些單元或集成測試作爲構建的一部分,例如使用maven surefire或故障安全插件? ...這些也使用Java 7? (因爲Jenkins使用Java6 JVM分支進程來運行某些東西)。 – sbk 2013-02-18 14:21:07

+0

是的,你是對的,我使用surefire插件運行junit套件,代碼有JDK 7依賴,因爲multi-catch語句不支持-source 1.6 – 2013-02-18 14:23:32

+0

發佈回答低於 – sbk 2013-02-18 14:31:18

回答

12

您還需要使用java 7運行surefire測試。默認情況下,surefire會使用與運行maven相同的jvm - Java6。

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.13</version> 
     <configuration> 
     ... 
     <jvm>${env.JAVA_HOME_7}/bin/java</jvm> 
     </configuration> 
    </plugin> 
    </plugins> 
+0

謝謝,解決了這個問題! – 2013-02-18 14:33:56

+0

啊!轟炸目標! – 2014-03-04 05:29:17

4

我記得我也掙扎了這個問題。請按照以下步驟來解決此問題

原因:當安裝多個JRE那麼多的java.exe也被安裝到系統的許多位置。

解決方案:修改您的環境PATH變量,改變的java.exe的順序。將位置java.exe放在第一個位置,如下面的代碼

PATH = C:\ Program Files \ Java \ jdk1.6.0 \;其他;其他;其他

根據您的使用和安裝位置更改上述位置。

+1

謝謝,我的問題已經解決你和sbk的幫助! – 2013-02-18 14:34:41

+0

好,好運...... – 2013-02-18 15:45:13

-1

你的目標/ lib目錄下看一看,你可能有相同的jar的兩個版本。對我來說這是創建親

0

我已經不止一次遇到這個問題,這是因爲你的系統上有多個版本的jdk(jre),所以只需將JAVA_HOME設置爲你編譯的正確的jdk項目和運行會很好。

相關問題