背景
在对接银行时,其提供的自定义的包中依赖的一个加解密包 bcprov-jdk15on-1.56是1.56 版本,这版中某方法或者类的作用域是public,而在我们项目中引用的bcprov-jdk15on-1.68是更高版本的1.68的,在这版中不是公开的,存在冲突。由于类加载机制,在加载时加载的是高版本的,因此引入的银行的包跑不通。
解决方案-修改jar包路径
1、下载jarjar.jar包,这里使用的是1.4版本
链接:百度网盘 请输入提取码
提取码:9fr0
2、创建文件夹,将jarjar-1.4.jar和需要修改jar包路径的jar放在同一目录,如这里放低版本bcprov-jdk15on-1.56
3、新建跟换规则 rule.txt
在rule.txt中输入rule org.bouncycastle.** org.zm.bouncycastle.@1
意思是将包中org.bouncycastle.**的路径,修改为org.zm.bouncycastle.**
4、将rule.txt文件放到第二步的文件夹下
5、cmd命令进入jarjar.jar的目录,执行 java -jar jarjar-1.4.jar process rule.txt bcprov-jdk15on-1.56.jar bcprov-my-jdk15on.jar
执行成功后,会在同目录下生成名称为bcprov-my-jdk15on.jar的jar包