使用Maven 3.0与Jenkins 2.1XX构建Java 6项目遇版本不兼容错误
解决Jenkins构建老项目时的UnsupportedClassVersionError问题
嘿,这个问题我之前帮不少新手踩过坑,其实核心就是JDK版本不匹配导致的字节码冲突。先给你拆解下错误:Unsupported major.minor version 51.0里的51.0对应的是JDK 7的字节码版本,这说明你的Jenkins构建环境中,要么是编译输出了JDK7+的字节码,要么是用了错误的JDK版本来运行代码——而你在Eclipse里已经正确配置了JDK6,所以能正常编译。
下面是一步步的解决方案:
1. 在Jenkins中配置JDK 6
首先要确保Jenkins能找到JDK6,而不是默认用系统的JDK8:
- 进入Jenkins的「Manage Jenkins」→「Global Tool Configuration」
- 找到「JDK」板块,点击「Add JDK」
- 取消勾选「Install automatically」(如果你本地已经安装了JDK6),给这个JDK起个好识别的名字(比如
JDK 1.6),然后填入JDK6的本地安装路径(比如Windows下的C:\Program Files\Java\jdk1.6.0_45,Linux下的/usr/lib/jvm/java-6-openjdk-amd64) - 保存配置
2. 配置兼容的Maven版本
你的项目兼容Maven3.0或3.2,所以要在Jenkins里单独配置这些版本,避免用全局的Maven3.3+:
- 同样在「Global Tool Configuration」里找到「Maven」板块,点击「Add Maven」
- 给它命名(比如
Maven 3.0.5),填入本地Maven3.0的安装路径,或者勾选「Install automatically」让Jenkins自动下载对应版本 - 保存配置
3. 确保项目pom.xml的编译插件配置正确
即使Jenkins指定了JDK6,如果pom里没明确编译版本,Maven会默认用运行它的JDK版本来编译(比如用JDK8运行Maven的话,默认编译成JDK8的字节码)。所以要在项目的pom.xml中添加或修改maven-compiler-plugin:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <!-- 这个版本兼容Maven3.0,不要用太高版本 --> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
这个配置强制Maven用JDK6的语法编译,输出JDK6兼容的字节码。
4. 配置你的Jenkins构建任务
最后在老项目的构建任务里指定正确的工具版本:
- 打开任务的配置页面,找到「JDK」下拉框,选择刚才配置的
JDK 1.6 - 找到「Maven Version」下拉框,选择配置好的
Maven 3.0.5 - 确保「Goals and options」里的命令(比如
clean install)没有额外指定错误的JDK参数 - 保存配置后重新构建试试
额外排查点
如果还是报错,可以检查:
- Jenkins服务器的系统环境变量(比如
JAVA_HOME、PATH)有没有指向JDK8,避免Maven启动时默认用了系统JDK - 项目中有没有依赖第三方jar包是用JDK7+编译的?不过你说Eclipse里能正常运行,所以这个概率不大
内容的提问来源于stack exchange,提问作者Romain H.
相关产品推荐
相关产品推荐

