当前位置:网站首页>jar版本冲突问题解决
jar版本冲突问题解决
2022-06-26 09:34:00 【MiMing仔】
背景
银行渠道对接过程中,有些渠道会依赖自己的加解密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)]](/img/f4/d48943d9cd47d649b42a27322f0fe8.png)
2.新增rule.txt文件,文件内容为:
(原始根包名使用反编译工具jd-gui.exe打开查看)
rule 原始包名.** 目标包名[email protected]
如:rule org.bouncycastle.** db[email protected]
3.使用cmd切换到当前目录下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qt5LO4YO-1654159721629)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/70629fc8a50b47db6b1b1257e61d348f)]](/img/0a/a8324d9bd1bca7b3dca1b5cac15dd7.png)
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包根目录包名](https://img-blog.csdnimg.cn/0cc1feea724e4bdfbff1fc75b69978e6.png)
原始jar包根目录包名
目标jar包根目录包名
6.登录远程maven私服,然后使用上传功能,这样项目里就可以通过maven的方式进行管理。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLhVRGuX-1654159721634)(http://10.0.17.20/server/index.php?s=/api/attachment/visitFile/sign/e444baa7fbd082ee4cd7cf86d208b566)]](/img/ad/55485491d632dd6c7f8acc38792955.png)
边栏推荐
- 存储过程测试入门案例
- 自动化测试——pytest本身及第三方模块介绍及使用
- 【轨迹规划】Ruckig库的测试
- #云原生征文# 在 Google Kubernetes Cluster 上使用 HANA Expression Database Service
- 爬虫相关文章收藏:pyppeteer 、Burpsuite
- Differences between VI and vim and common commands
- 2021-11-29 quintic polynomial of trajectory planning
- MapReduce&Yarn理论
- Daily-used English phrases
- Jz2440--- using uboot burning program
猜你喜欢
QPM suspended window setting information

MapReduce&Yarn理论

The basis of C language grammar -- pointer (multidimensional array, function, summary) learning

DAY 3 数组,前置后置,字符空间,关键词和地址指针

Logview Pro can be used if the log is too large

Specific implementation comparison between different programming languages

How does flutter transfer parameters to the next page when switching pages?
Optimization of power assisted performance of QPM suspended window

力扣------从数组中移除最大值和最小值

深度学习(初识tensorflow2.版本)之三好学生成绩问题(1)
随机推荐
Leetcode refers to offer II 091 Paint house - modify in place
2021-11-12 vrep vision sensor configuration
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.npm ER
爬虫相关文章收藏:pyppeteer 、Burpsuite
SQL高级教程
力扣------从数组中移除最大值和最小值
SQL query duplicate record
WGCLOUD的web ssh服务端口是多少
Logview Pro can be used if the log is too large
Specific meaning of go bootstrap
jz2440---使用uboot燒錄程序
SQL function
Introduction to QPM
Does the go compiled executable have dynamic library links?
节流,防抖,new函数,柯里化
This new change of go 1.16 needs to be adapted: the changes of go get and go install
Cento7.7 elk installation simple record
Jz2440 - - - utiliser le programme de gravure uboot
c语言语法基础之——函数嵌套、递归 小程序斐波那契之和、阶乘
自动化测试——关于unitest与pytest初始化共存问题