java.lang.NoClassDefFoundError

怎么解决java.lang.NoClassDefFoundError错误

生产中遇到两次这个问题,我的解决方式是: 马上回滚, 然后懵逼😳,不知道从何入手

遇事不要慌,先说结论

通常是由于jar包冲突,升级了某些服务导致之前使用的类的jar包版本号发生了改变,导致报错的类所在的包的版本号发生变化

案发现场

java.lang.NoClassDefFoundError: Could not initialize class com.skysearch.cs.client.validator.ValidationUtil
  at com.skysearch.cs.biz.service.eval.impl.EvalServiceImpl.addEvaluate(EvalServiceImpl.java:72)
  at com.skysearch.cs.biz.service.eval.impl.EvalServiceImpl$\(FastClassBySpringCGLIB\)$a991df9a.invoke(:null)
  at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

通过上面这个报错先找到使用的类 ValidationUtil , 然后看其所在的项目,使用的包是什么版本

image-20221026113356982

mvn dependency:tree

得到类似下图

image-20221026113507514

搜索jar包关键字

image-20221026113537302

拿到所在的版本如 上面是 6.2.3.Final

由于我的项目 A 依赖了 jar包 B, 上面这个是B的mvn分析, 同样分析下 A后,发现

A的版本高于B的版本,导致了问题。

那么通常想将两个版本保持一致,要么A降,要么B升

这里采用了升B的方式

实际后发现问题解决, Over

重要参考: https://blog.youkuaiyun.com/smartzzg/article/details/123257743

按照这个手动排除依然不行,mvn dependency:tree 依然存在,懵了

各种搜,找到一个命令 mvn clean install -U 执行了下,重试,成功了!

-U强制更新,清理了本地包的缓存,然后成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值