【发布时间】: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语句