jenkins+maven编译WEB项目中遇到的坑

jenkins+maven编译WEB项目中遇到的坑

事件背景:

本人在一个web项目中依赖一个新的jar包,在上传到公司maven私服后,jenkins打包编译过程中出错,jenkins控制台中提示“类文件具有错误的版本52.0,应为50.0”。接下来进入正题。

报错处理:

发现上述报错后,明显是jar包编译时使用的是jdk8,而该web项目编译时是使用jdk6产生了jdk版本冲突,因此需要将该jar包重新使用jdk6编译。将该jar包使用jdk6重新编译之后,重新上传到公司maven远程仓库,本以为问题迎刃而解。但是此时问题正在慢慢靠近。

问题浮现:

在将jar包重新上传到公司maven远程仓库后,本来信心满满的到jenkins上点击重新构建等待项目打包成功,结果又出现了报错,jenkins中打印的错误日志还是“类文件具有错误的版本52.0,应为50.0”。可能到这已经有人意识到博主的操作在哪个环节出现了问题。
再次出现该报错,我已经有点懵。接下来是我的问题处理路径:

  1. 检查jar包编译是否存在问题
    通过***.jar\META-INF下的MANIFEST.MF文件,发现该jar包确实是jdk1.6编译。
    在这里插入图片描述
    再次进入到报错的.class文件,通过Sublime Text查看.class文件的字节码,此处显示为32,确实是jdk1.6编译的jar。至此,可以排除jar包编译的问题。
    备注:
    只看第一行:
    前面8个字节CA FE BA BE是固定的
    随后4个字节00 00是次版本号
    再后面的4个字节00 32是JDK的版本号(JDK1.6)
    34(对应十进制的52):JDK1.8
    33(对应十进制的51):JDK1.7
    32(对应十进制的50):JDK1.6
    在这里插入图片描述
  2. 手忙脚乱 :如果在本地编译,可能我已经意识到哪里出现了问题,但是在jenkins上打包对问题不敏感,因此在这个问题的处理上花费了些时间,直到最后突然意识到自己在哪个环节出现了问题。

问题解决:

jenkins+maven在对项目进行编译时,如果发现jenkins所在服务器的本地仓库没有对应版本的jar包,会先到远程maven仓库拉取jar,而本人在第一次将jdk1.8版本的jar上传到远程maven后发现版本错误,重新将jar编译为jdk1.6后上传到远程maven,直接来到了jenkins点击构建,而此时,jenkins所在服务器的本地maven仓库并没有重新拉取jar包。备注:maven仓库的特点:如果本地仓库已经存在某个版本的jar包,不会在远程仓库对jar进行重新拉取。
因此,我们需要来到jenkins所在服务器的本地maven仓库,将之前拉取下来的jdk1.8编译的jar包删除,再在远程仓库中拉取已重新上传的jdk1.6编译的jar包。
问题解决。原因就是,本人在两次maven远程仓库上传jar包时,jar包的版本号并没有修改,同时本地仓库已经拉取了该版本的jar,因此第二次上传的jar并没有被本地仓库重新拉取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值