jar包冲突解决(NoSuchMethod)办法
2023-10-22 本文已影响0人
雨中星辰0
概述
有的时候项目会经常出现jar包冲突的问题,我们在项目中引入了好几个不同版本的jar包,如何确定运行时,使用的那个jar包,是一个难题。
- 使用arthas的sc命令
$ sc -d demo.MathGame
class-info demo.MathGame
code-source /private/tmp/math-game.jar
name demo.MathGame
isInterface false
isAnnotation false
isEnum false
isAnonymousClass false
isArray false
isLocalClass false
isMemberClass false
isPrimitive false
isSynthetic false
simple-name MathGame
modifier public
annotation
interfaces
super-class +-java.lang.Object
class-loader +-sun.misc.Launcher$AppClassLoader@3d4eac69
+-sun.misc.Launcher$ExtClassLoader@66350f69
classLoaderHash 3d4eac69
Affect(row-cnt:1) cost in 875 ms.
- 在开发时,加入代码打印jar包的路径
例如:
URL resource = ServiceBus.class
.getClassLoader()
.getResource("dcloud/common/InnerServiceBus/ServiceBus.class");
System.out.println(resource);
打印结果:
jar:file:/D:/maven/repository/com/epri/zeus-core/2.0.3/zeus-core-2.0.3.jar!/dcloud/common/InnerServiceBus/ServiceBus.class