jar版本冲突问题解决

1 篇文章 0 订阅

背景

银行渠道对接过程中,有些渠道会依赖自己的加解密sdk或者算法进行数据加密传输,有些自带的sdk和底层依赖jar会存在版本冲突的情况(A银行SDK依赖0.0.1的jar a,B银行的jar版本依赖0.0.5的jar a),在不确定对应的银行有没有针对依赖jar做个性化开发和优化的前提下,由于maven的版本管理的原因,如果不进行版本区分的话,就会导致错误引入了低版本的jar,导致多渠道间无法共用,本文就是针对这种前提下做的一种折中方案处理。

处理方案

主要解决思路是:通过修改对应冲突jar的根包前缀与maven上的groupId、artifactId和version,以此来区分各自渠道依赖的jar

涉及工具

jarjar.jar
jd-gui.exe

处理步骤

1.新建目录,把jarjar.jar和需要调整的jar放入该目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njyp1Pw8-1654159721627)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/a5f5f71e864ab18709d431f19e6c1c19)]

2.新增rule.txt文件,文件内容为:

(原始根包名使用反编译工具jd-gui.exe打开查看)
rule 原始包名.** 目标包名.@1
如:rule org.bouncycastle.** dbs.org.bouncycastle.@1

3.使用cmd切换到当前目录下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qt5LO4YO-1654159721629)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/70629fc8a50b47db6b1b1257e61d348f)]

4.在cmd窗口下执行如下命令:

java -jar jarjar.jar process rule.txt 需要修改的.jar 修改后的.jar(修改后的jar名字自定义) 
如: java -jar jarjar.jar process rule.txt bcpg-jdk15on-1.64.jar test.bcpg-jdk15on-1.64.jar

5.生成的新test.bcpg-jdk15on-1.64.jar使用jd-gui.exe进行反编译发现,所有class文件的根包都改成了dbs.org.bouncycastle开头:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjfnSNFJ-1654159721631)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/3b75dcf58143aef479df5fcaedc1aaa7)]
目标jar包根目录包名
原始jar包根目录包名
在这里插入图片描述

目标jar包根目录包名

6.登录远程maven私服,然后使用上传功能,这样项目里就可以通过maven的方式进行管理。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLhVRGuX-1654159721634)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/e444baa7fbd082ee4cd7cf86d208b566)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值