同一个jar包不同版本冲突解决方法

时间:2022-02-28 22:29:43

一个项目里面同一个jar包一般不能有两个版本的 不然可能会出现jar包冲突的情况

常见报错有这三个:
1、java.lang.ClassNotFoundException(找不到类)
2、java.lang.NoSuchMethodError(找不到具体方法)
3、java.lang.NoSuchFieldError(字段错误)
4、java.lang.LinkageError(类错误 这个我没怎么见过)

解决方法有:
1、删了旧版本的jar包,不过可能会导致一些旧代码不能用 (不推荐)
2、合并新旧两个jar包,这个有比较高的技术要求(不会)
3、拆开jar包,修改里面的package,然后在生成一个新的jar包(方便,简单,如果遇到需要就该jar包内容的情况,这个方法也适用)

这个文章写第三种方法

1、首先下载jarjar.jar :

2、随便放一个地方(我放到E盘的jarjar文件夹下)

3、打开cmd,cd到E盘的jarjar文件夹,然后就运行jarjar.jar(如图1、2两个步骤)
同一个jar包不同版本冲突解决方法

4、打开一个txt 输入rule org.apache.http.** org.apache.http123.@1来设置转换规则,并且存到jarjar文件夹下
(格式就这样:rule xxxx.xx.aaa.** xxxx.xx.aaa123.@1)修改的地方就是aaa那里

5、把需要转换的 xxxxx1.jar放到jarjar文件夹里面,然后输入java -jar jarjar.jar strings xxxxx1.jar,查看你要修改的jar包的包名

6、输入java -jar jarjar.jar process ./aa.txt xxxxx1.jar ./xxxxx2.jar开始转换(xxxxx1.jar是需要被修改路径的jar包 xxxxx2.jar是修改后生成jar包的名字)
同一个jar包不同版本冲突解决方法

到这里 看到红线下面那个E:\jarjar> 就代表整个步骤完成了,可以去jarjar文件夹看一下你新的jar包,这个jar包导入项目的时候也不用担心说冲突了。