Maven / Jenkins java.lang.UnsupportedClassVersionError:不支持的major.minor版本51.0

我有一台安装了JDK&JRE 6和7的Jenkins服务器。

所有项目都建立在1.6上,除了1.7依赖项目。

我已经将maven pom文件配置为使用JAVA_HOME_7环境PATH中的Java编译器。

 org.apache.maven.plugins maven-compiler-plugin 3.0  1.7 1.7 true true **${env.JAVA_HOME_7}/bin/javac** true false   

在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项目的兼容性?

非常感谢,Atanas

您还需要使用java 7运行surefire测试。 默认情况下,surefire将使用与运行maven相同的jvm – 在您的情况下为Java6。

    org.apache.maven.plugins maven-surefire-plugin 2.13  ... ${env.JAVA_HOME_7}/bin/java    

我记得我也在努力解决这个问题。 请按照以下步骤解决问题

原因:当安装多个JRE时,多个java.exe也安装到系统的许多位置。

解决方案:修改环境PATH变量并更改java.exe的顺序。 将java.exe的位置放在第一个位置,如下面的代码

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

根据您的使用和安装位置更改上述位置。

我不止一次遇到过这个问题,因为你的系统上有多个版本的jdk(jre),所以只需将JAVA_HOME设置为你编译项目的正确jdk,运行就可以了。

看看你的target / lib目录,你可能有两个版本的同一个jar。 对我而言,它正在创造专业人士