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表示
3.java.lang.Class的属性进行判断
通过获取Class的ProtectionDomain(给定代码资源和权限的一种新的保护范围),获取codeSource
上述工具类来源于: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