NoSuchMethodError 解决 基于maven

    这个问题主要是由于包冲突引起的,个人理解的产生问题是原因如下:

    由于a.jar依赖于b.jar,你的jre在编译时先加载了a.jar,加载后便在里面寻找对应的方法,但是a.jar里没有这个方法,于是jre放弃了寻找,抛出了no method问题。、

    刚出这个问题时,我还专门跑到b的jar包里查class,看到里面明明有那个method,就晕了。

    查了很多资料后发现解决这个问题的方法还是取消掉包的依赖性最好,具体操作如下:

  选中报错的class,ctrl+shift+t,呼出一个界面,上面详细显示了含有这个class的jar,找到出问题的相同前缀的条目,记下对应的不应该执行的x1.jar、x2.jar...,然后打开cmd,cd到相应的工程下用pom文件分析jar包依赖(mvn dependency:tree),找到x1.jar、x2.jar包依赖的A.jar包,在pom文件的A.jar的<dependency>标签中加上类似下的代码,问题就解决了

		<exclusions>
      		<exclusion>
          		<groupId>org.apache.cxf</groupId>
          		<artifactId>cxf-api</artifactId>
      		</exclusion>
   		</exclusions>

  今天又发现一个找出错包来源的方法,起因是碰到了AbstractMethodError,又是包冲突导致的,在上述的Ctrl+shift+T之后,打开pom文件,点击Dependency Hierarchy标签,在右上角Filter里查找出错的包名,在左侧视窗中看到这个出错的包属于哪个依赖,然后进入pom.xml对应的依赖包内添加上述语句。

转载于:https://www.cnblogs.com/ABFM/p/4995483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值