jar包冲突解决(NoSuchMethod)办法

概述

有的时候项目会经常出现jar包冲突的问题,我们在项目中引入了好几个不同版本的jar包,如何确定运行时,使用的那个jar包,是一个难题。

  1. 使用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.
  1. 在开发时,加入代码打印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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容