如何解决多版本jar包冲突问题
作者:花开不识君
本文介绍了如何通过修改jar包全限定名来解决多版本jar包冲突问题,具体步骤包括:准备jarjar工具和规则文件、将工具和文件放在同一目录下、运行jarjar工具并生成新的jar包,这种方法有效地解决了由于类全限定名冲突导致的jar包不兼容问题
解决多版本jar包冲突问题
在和三方对接的过程中,我们可能会不断引入一些三方jar包
但这个时候就有可能出现一个项目需要依赖两个版本不同且功能不兼容的jar包,本文记录一种方法解决方法
修改jar全限定名
我们知道jvm加载类是通过判断类的全限定名来判断当前类是否被加载
这个导致多版本jar包不兼容的原因,那么我们就从里下手
例子
我们需要将 bcprov-jdk15on-1.65.jar 由原本的org.bouncycastle 替换为shade.bouncycastle
1、准备两个文件
- jarjar.jar
<!--自行把jar下载下来-->
<dependency>
<groupId>com.googlecode.jarjar</groupId>
<artifactId>jarjar</artifactId>
<version>1.3</version>
</dependency>
- rule.txt
rule org.bouncycastle.** shade.bouncycastle.@1
2、放到一个文件下(联同要修改的jar包)

4、运行jarjar
java -jar jarjar-1.3.jar process rule.txt bcprov-jdk15on-1.65.jar shade-bcprov-jdk15on-1.65.jar
5、大公告成

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
