登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
java中对于使用不兼容的不同版本的同一个第三方包的处理 ...
java中对于使用不兼容的不同版本的同一个第三方包的处理办法
[ 复制链接 ]
押疙
2025-5-31 23:35:18
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
1. 起因
最近项目中需要接入一个第三方系统,该系统提供了接入sdk,并使用了“bcprov-jdk16-1.46.jar”这个加密库,但在接入之前,我们使用了hutool里的加密模块的sm2加密,并依赖了“bcprov-jdk18on-1.78.jar”,由于这两个版本不兼容,就导致了两边只能有一个可以调通,在网上找了好多的文章,因为两个都是引入的第三方包,所以好多方法都不适用,几经波折最后终于解决,遂记录一下。
2. 解决办法
为方便说明,我们将依赖关系简述如下:
第三方系统的接入sdk: a.jar 依赖了第三方加密包 b.jar的1.0.0版本,
自己加密算法使用了第三方工具: c.jar 依赖了第三方加密包 b.jar的2.0.0版本, 并与1.0.0版本不兼容;
这个方法需要能获取到a.jar 或者 c.jar的源码,两者其实可以互换
2.1 将c.jar的源码下载下来
在我的案例是下载hutool的源码
2.2 将c.jar中自己使用的模块的源码集成到自己的代码中
将hutool的加密模块和core模块复制到项目里
2.2 通过jarjar更改包名(b.jar的2.0.0版本 更改为 d.jar)
2.2.1 下载jarjar
jarjar下载地址: https://mvnrepository.com/artifact/com.googlecode.jarjar/jarjar
里面的两个包都下载下来,有可能1.1不行,但是1.3可以,也可能反过来
2.2.2 下载需要的包(b.jar的2.0.0版本)
尽量在上面的maven仓库下载,国内的镜像仓库可能更新不及时,在我的案例中阿里仓库的好几个版本都不行,最后在上面的仓库里找到了15to18的1.80版本(阿里的仓库里没有这个版本)才可以改包名
2.2.3 更改包名
2.2.3.1 运行java -jar jarjar.jar strings b_2.0.0.jar
如果出现类似下面的内容,则可以更改包名
如果报错或者出现下面的内容则不能更改,换个版本的b.jar再试
2.2.3.2 创建rule.txt
里面的内容是要替换的包名规则
rule cn.b.** com.d.@1
其中 cn.b 是需要替换的内容, com.d是替换后的内容
2.2.3.2 运行java -jar jarjar.jar process rule.txt b.jar d.jar
其中b.jar是原来的jar包名称,d.jar是更改后的jar包名称,如果没有报错,那么包名就已经改好了
更详细的用法可以参考文章https://www.cnblogs.com/yejiurui/p/4283505.html
2.4 在maven中导入改名后的本地jar包(d.jar)
<dependency>
<groupId>cn.com</groupId>
d</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/d.jar</systemPath>
</dependency>
复制代码
2.5 将c.jar源码中使用到b.jar包中的引用更改为改名后的本地包(d.jar)
2.6 测试运行,解决问题
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
java
对于
使用
不兼容
不同
相关帖子
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java Optional 完全指南:优雅处理 null 的利器
追踪链路--使用iptables/ipvs来记录后端pod真实ip
上下文协议(MCP)Java SDK 指南
使用Python免费合并PDF文件
Java函数式接口——渐进式学习
大语言模型~Ollama本地模型和java一起体验LLM
使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
最小二乘问题详解9:使用Ceres求解非线性最小二乘
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
2
255
褐洌
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
2
312
肿圬后
2025-12-16
业界
Java Optional 完全指南:优雅处理 null 的利器
0
971
古修蟑
2025-12-17
业界
追踪链路--使用iptables/ipvs来记录后端pod真实ip
0
800
硫辨姥
2025-12-17
业界
上下文协议(MCP)Java SDK 指南
0
294
豌笆
2025-12-17
安全
使用Python免费合并PDF文件
0
599
洪势
2025-12-18
业界
Java函数式接口——渐进式学习
0
496
列蜜瘘
2025-12-18
安全
大语言模型~Ollama本地模型和java一起体验LLM
0
481
裴涛
2025-12-18
安全
使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
2
742
嫁吱裨
2025-12-19
业界
最小二乘问题详解9:使用Ceres求解非线性最小二乘
0
496
挚魉
2025-12-19
回复
(2)
格恳绌
2025-10-14 15:57:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
宛蛲
2025-11-30 17:19:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
押疙
2025-11-30 17:19:20
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9950
查看更多
今日好文热榜
688
当遇见 CatchAdmin V5-模块化设计重新定义
490
【有手就行】SWIFT:花20分钟把大模型的名
559
论文速读记录 | 2025.12(2)
373
浮点数的本质:为什么计算机无法精确表示0.
726
Flink源码阅读:如何生成JobGraph
928
Python 潮流周刊#132:30 年 Python 自由职
481
大模型榜单周报(2025/12/20)
157
【节点】[LinearToGammaSpaceExact节点]原
789
Aspire 与 Azure Functions 深度集成:架构
1003
阿里Z-Image图像生成模型容器部署
310
痞子衡嵌入式:16MB以上NOR Flash地址模式
668
最新AI换脸软件,全面升级可直播,Mirage下
451
热点 Key 与大 Key 治理——识别、拆分、预
646
Media Extended
330
vlookup的终结者splookup,9个案例讲透查询
872
ROS2之Launch介绍
895
精选 8 个 .NET 开发实用的类库,效率提升
110
精选 8 个 .NET 开发实用的类库,效率提升
600
精选 8 个 .NET 开发实用的类库,效率提升
173
精选 8 个 .NET 开发实用的类库,效率提升