java.lang.NoSuchMethodError---Maven包冲突解决

问题

项目A单独调用没有问题,将其打成jar包形式通过pom引入至springboot项目B后出现java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.defaultPreferDirect
错误

处理步骤

1.确定版本 mvn dependency:tree>./tree.txt

根据类名【io.netty.buffer.PooledByteBufAllocator】去查找(idea快捷键 ctrl+N) 。发现有多个版本,分别点击进去,可以发现4.1.27.Final版本是没有【defaultPreferDirect】方法。
根据类名查找
再回到A项目和B项目根目录下分别执行 【mvn dependency:tree>./tree.txt】,对比下会发现netty相关的包在正常的项目A中用的4.1.52.Final版本,而有问题项目B中用的4.1.27.Final版本。

2.为什么会出现低4.1.27.Final版本?

检查pom,没有地方显示引用netty相关的包,可以判断是引用的其他的包,而其他的包里面包含了低版本的netty的包。本项目中是因为springboot-boot-starter-parent--------->spring-boot-dependencies中定义了低版本的netty的包。

ctrl+点击找pom文件1
继续ctl+点击
ctrl+点击找pom文件2
搜索下即可发现
ctrl+点击找pom文件3

3.修改pom,显示定义包版本

本文为spring-boot-dependencies中定义了低版本导致,我们在B项目根目录下的pom文件添加显示定义的版本即可。解决包冲突还可以用exclusion方式。

 <properties>
    <netty.version>4.1.52.Final</netty.version>
</properties>
   <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>${netty.version}</version>
    </dependency>

4.检查

回到B项目根目录执行mvn dependency:tree>./tree.txt,可以看到引用的netty相关的包和A项目一致了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值