类冲突

一、问题排查和解决

  1. 如果有异常堆栈信息,根据错误信息即可定位导致冲突的类名,然后在eclipse中CTRL+SHIFT+T或者在idea中CTRL+N就可发现该类存在于多个依赖Jar包中
  2. 若步骤1无法定位冲突的类来自哪个Jar包,可在应用程序启动时加上JVM参数-verbose:class或者-XX:+TraceClassLoading,日志里会打印出每个类的加载信息,如来自哪个Jar包
  3. 定位了冲突类的Jar包之后,通过mvn dependency:tree -Dverbose -Dincludes=<groupId>:<artifactId>查看是哪些地方引入的Jar包的这个版本
  4. 确定Jar包来源之后,如果是第一类Jar包冲突,则可用<excludes>排除不需要的Jar包版本或者在依赖管理<dependencyManagement>中申明版本;若是第二类Jar包冲突,如果可排除,则用<excludes>排掉不需要的那个Jar包,若不能排,则需考虑Jar包的升级或换个别的Jar包。当然,除了这些方法,还可以从类加载器的角度来解决该问题,可参考博文——如果jar包冲突不可避免,如何实现jar包隔离,其思路值得借鉴。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值