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

一个项目里面同一个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 :

官网:https://code.google.com/p/jarjar/(要翻墙)
附件:http://download.csdn.net/detail/qq_22778717/9689007
2、随便放一个地方(我放到E盘的jarjar文件夹下)

3、打开cmd,cd到E盘的jarjar文件夹,然后就运行jarjar.jar(如图1、2两个步骤) 
è¿éåå¾çæè¿°

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包的名字) 
è¿éåå¾çæè¿°

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

转自:https://blog.csdn.net/qq_22778717/article/details/53261396

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Maven 中,同一个项目中可能会引用不同版本同一个 jar 包,这可能会导致一些问题。为了解决这个问题,可以通过使用 Maven 的依赖范围和命名空间机制来加载不同版本同一个 jar 包。 1. 依赖范围(scope):在 pom.xml 文件中,可以指定依赖的范围。例如,可以将依赖的范围设置为 compile,表示该 jar 包对于所有的测试、编译、运行都是必须的。还可以将依赖的范围设置为 test,表示该 jar 包只在测试代码中使用,不会包含在最终的构建结果中。如果同一个项目中使用了不同版本同一个 jar 包,可以将不同版本的 jar 包的依赖范围设置为不同的值,这样就可以在构建过程中排除一些 jar 包。 2. 命名空间(namespace):Maven 通过使用命名空间来加载不同版本同一个 jar 包。在 pom.xml 文件中,可以通过指定不同的 groupId 来加载不同版本同一个 jar 包。例如,如果项目中需要使用两个版本的 log4j,可以将这两个 jar 包的 groupId 设置为不同的值,例如: ``` <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version>1.7.25</version> </dependency> ``` 上面的代码中,我们使用了不同的 groupId 来加载不同版本的 log4j,这样就可以在同一个项目中同时使用不同版本的 log4j,而不会出现冲突。但是需要注意,使用命名空间机制加载不同版本的 jar 包可能会导致一些问题,例如不同版本的 jar 包可能会有不兼容的 API。因此,建议在使用时谨慎考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值