omitted for duplicate jar包冲突排查

1.maven的命令

mvn dependency tree 

可以将当前所有的依赖关系都展示出来,包括来自不同处的依赖项。

mvn dependency:tree -Dverbose

Dincludes 可以进行参数过滤

mvn dependency:tree -Dverbose -Dincludes=*spring*:*spring*

参考文档:https://www.jianshu.com/p/bbd5b0abcad1

2.idea工具

maven projects,idea更直观的展示jar的依赖,以及将冲突的jar包omitted表示

omitted for duplicate jar包冲突排查

3.java.lang.Class的属性进行判断

通过获取Class的ProtectionDomain(给定代码资源和权限的一种新的保护范围),获取codeSource

omitted for duplicate jar包冲突排查

上述工具类来源于:https://blog.****.net/RobertoHuang/article/details/81778181

可以在报错地方,调用上述工具类,查看类的具体来源jar包

4.阿里工具Arthas,可以直接线上排查jar冲突

具体的安装参考官网:https://alibaba.github.io/arthas/en/install-detail.html

主要是classloader命令

classloader -l

classloader -t

用ClassLoader去查找resource    其中1be6f5c3为LaunchedURLClassLoader的hash值

[email protected]  12324        1be6f5c3

classloader -c 1be6f5c3  -r org/springframework/stereotype/Controller.class  

用ClassLoader去加载指定的类

classloader -c 1be6f5c3  --load com.sinochem.yunlian.truck.base.controller.BcAddressExcelController

omitted for duplicate jar包冲突排查