【问题标题】:Maven/Jenkins java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0Maven/Jenkins java.lang.UnsupportedClassVersionError:不支持的major.minor版本51.0
【发布时间】:2013-02-02 23:46:29
【问题描述】:

我有一个 Jenkins 服务器,同时安装了 JDK & JRE 6 和 7。

所有项目都建立在 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 install 期间,我收到以下错误:

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

非常感谢, 阿塔纳斯

【问题讨论】:

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

标签: maven jenkins java


【解决方案1】:

我记得我也为这个问题苦苦挣扎。按照以下步骤解决问题

原因:安装了多个JRE后,系统的多个位置也安装了多个java.exe

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

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

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

【讨论】:

    【解决方案2】:

    您还需要使用 java 7 运行安全测试。默认情况下,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>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2014-03-17
          • 2016-01-10
          • 2012-10-10
          • 2012-06-29
          • 2015-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多