在我们引入新的jar包时候可能会因为传递依赖,引入现有项目中存在,但是版本不同的jar,从而引起jar包冲突,在有些情况下,运行并不会出现问题,其中的原因是:gradle有一套策略,在构建时候为我们进行了选择,实际线上部署的项目中只有一个版本的jar。 有时候,会导致单元测试不能运行,因此,我们需要找到冲突的jar,并对陈旧的版本进行升级,或者对传递依赖进行排除;
其中排除依赖的方式maven和gradle不同,这里讨论gradle管理的情况;
但是都可以使用exclude
dependencies {    compile("com.aaa:web:1.0") {        exclude group: 'org.unwanted', module: 'iAmBuggy'     }       }
如何排除很多资料,可以参考https://blog.csdn.net/pkaq_/article/details/53906668
这里再梳理一下如何发现冲突的jar,及其版本,解决思路
1.首先会发现 NoClassDef 、NoSuchMethod 等异常,根据堆栈信息, 在项目中找寻这个类。(IDEA 双击shift)。一般会发现两个类。这时候, 其实你已经可以看到两个jar的版本了。
2. 然后,使用
gradlew webapp-module-name:dependencies
gradlew dependencyInsight --dependency slf4j-api
命令,打印依赖树; 分析依赖关系,找到不同版本的依赖方。
3. 知道了是哪些内容,引入了不同jar,接着就是解决他们。主要的思路是,
A, 升级陈旧版本, 对于一些不冲突不引起异常的升级这里是提倡的,但是也要细细阅读相关使用的业务代码和jar源码,确保无误后; 提请测试,进行回归和压力测试。
B,消除传递依赖, 强制使用某个统一的依赖版本等,不是消除他们而是规避,
领会:
1. 传递依赖的jar 不会打到这个A jar中形成jar中jar,项目所有直接间接依赖的jar都会放在同级目录下, 会放在最外层的公共依赖jar中
2. gradle 有一套选择重复jar 的机制,保证在形成的可执行war包中,只有同一个jar包的一个版本;关于选择策略可以参照:https://www.cnblogs.com/gzdaijie/p/5296624.html

jar包冲突的解决,依赖树的打印与分析相关推荐

  1. 【maven】maven jar 包 冲突 的解决方式

    1.概述 视频参考:maven jar 包 冲突 的解决方式 此处文章参考:Mvn : Maven的依赖管理 依赖冲突 解决思路

  2. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)

    Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) 参考文章: (1)Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) (2)ht ...

  3. 阿里云SDK和SpringBoot maven项目中jar包冲突的解决办法

    stringboot项目在引用阿里云短信sdk时,出现jar包冲突问题,项目可以正常启动,但是启动会报如图错误 解决办法,在maven中查找到冲突的jar,并用exclusions隔离冲突的jar & ...

  4. Maven中jar包冲突的解决方式

    现象 创建一个maven工程,引入spring-context包. <dependency><groupId>org.springframework</groupId&g ...

  5. Maven中 jar包冲突的解决办法

    问题描述:启动工程报如下错误: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:fil ...

  6. 关于idea中maven jar包冲突的解决方法

    前几天拿到一个spring mvc项目,是别人在生产环境正在运行的项目,把源码.maven仓库发给我,信心满满的准备跑项目,结果因为maven依赖冲突导致编译失败,现将几种方法分享给大家: 1.在Fi ...

  7. 几个解决 Maven Jar 包冲突的小技巧,太实用了!

    前言 大家在项目中肯定有碰到过Maven的Jar包冲突问题,经常出现的场景为: 本地运行报NoSuchMethodError,ClassNotFoundException.明明在依赖里有这个Jar包啊 ...

  8. jar包冲突常用的解决方法

    转载自https://www.cnblogs.com/xiayangy/p/4038347.html jar包冲突常见的异常为找不到类(java.lang.ClassNotFoundException ...

  9. 常用jar包_几个解决 Maven Jar 包冲突的小技巧.

    前言 大家在项目中肯定有碰到过Maven的Jar包冲突问题,经常出现的场景为: 本地运行报NoSuchMethodError,ClassNotFoundException.明明在依赖里有这个Jar包啊 ...

最新文章

  1. Apache HTTP Server Version 2.2 文档中文版
  2. 蓝桥杯 扑克序列(全排列)
  3. 2018年【计算机视觉机器学习人工智能】国际重要会议汇总
  4. 北京清华长庚医院与数据院签约,医工结合促医疗大健康发展
  5. [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
  6. Flutter时间轴(timeline)
  7. [python]getopt模块的使用介绍
  8. python rest api client_Python py-jama-rest-client包_程序模块 - PyPI - Python中文网
  9. Lua开发学习2-数据类型
  10. UIScrollView 遇到的小坑
  11. 全面理解Gatner的企业信息管理成熟度模型
  12. yy_model及 YYLabel
  13. 元数据看板的初步设计思路
  14. 如何在EverEdit编辑器中一键编译运行JAVA并接收键盘输入数据
  15. LDdecay计算和做图
  16. 刘慈欣回应《流浪地球》热点问题:承认有些设定有bug...
  17. 腾讯云5000亿元、阿里云2000亿元,都是投的啥?
  18. C#《原CSharp》第三回 万文疑谋生思绪 璃月港口见清玉
  19. 线面积分应该没那么难吧···
  20. 智慧农业物联网平台建设方案

热门文章

  1. 写二语习得学年论文感想
  2. 如何写好一份前端简历
  3. 阿里云为啥在云服务器市场输给腾讯云
  4. 流形上的预积分(上)
  5. PROE5.0运动仿真入门到精通视频教程
  6. 解决 CMD 命令行【不是内部或外部命令,也不是可运行的程序】或者【发生系统错误,拒绝访问】
  7. [4G+5G专题-144]: 测试-频谱分析仪工作原理与测试结果分析
  8. 如何将QRcode二维码的定位标做成圆形
  9. 微型摄像头的CDS读出电路原理
  10. 【chrome】chrome百度网盘网页版倍速