java.lang.NoClassDefoundError和java.lang.ClassNotFundException

1.结果:
存在多个版本spring依赖包,导致服务启动的过程中无法确定使用那个版本,pom.xml中进行指定对应的版本依赖包
2.情况说明:
(1).公司升级成spring cloud之后,此次版本迭代进行的是版本日常需求维护.并没有进行过多的框架层面的改动
(2)业务代码也是改动比较少,而且业务层面的改动,讲道理来说即使业务层面的改动,编译没有问题,启动过程中也不可能出现这个异常.
3.详细报错信息
Exception in thread “main” java.lang.NoClassDefFoundError:org/springframework/context/support/ClassPathXmlApplicationContext at XXXXXXXXXX(内部服务main方法)
Caused by:java.lang.ClassNotFundException:org/springframework/context/support/ClassPathXmlApplicationContext at java
.net.URLClassLoader
4.排查过程
(1).review了整个版本代码变更情况,经过代码排查确认无异常
(2).检查pom.xml,确认有部分依赖进行过变更
(3).问题分析ClassNotFundException出现,要么真的对应的依赖包找不到,要不就是找到多个
(4)控制台执行 mvn dependency:tree,查看对应的ClassPathXmlApplicationContext的版本,发现确实存在俩个不同的版本,应该是pom修改依赖然后带进来的,
5.处理
(1)由于spring的ClassPathXmlApplicationContext版本在spring cloud有对应的版本,需要指定正确的版本
(2).在项目pom中直接指定固定的对应的依赖版本,不受依赖的内部服务影响
(3).重新mvn dependency:tree 发现依然存在多个版本的依赖包,检查了一下各个子模块的pom,发现没有进行父pom声明,进行处理之后OK.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>