问题 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编译器。

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

非常感谢, 阿塔纳斯


3021
2018-02-18 14:02


起源

也许您正在运行某些单元或集成测试作为构建的一部分,例如使用maven surefire或故障安全插件? ......这些也使用Java 7吗? (因为看起来Jenkins正在使用Java6 JVM运行某个进程)。 - sbk
是的,你是对的,我正在使用surefire插件运行junit套件,并且代码是JDK 7依赖的,因为-source 1.6不支持multi-catch语句 - Atanas Kanchev
在下面发布答案 - sbk


答案:


您还需要使用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>

12
2018-02-18 14:30



谢谢,这解决了问题! - Atanas Kanchev
啊哈!轰击目标! - niharika_neo


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

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

解: 修改您的环境 路径 变量并改变顺序 java.exe的。把位置 java.exe的 在第一个位置,如下面的代码

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

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


4
2018-02-18 14:22



谢谢,我的问题已经解决了你和sbk的帮助! - Atanas Kanchev
太棒了,祝你好运...... - Rais Alam


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


0
2018-06-03 12:27





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


-1