Maven依赖版本不同异常
前言
今天帮鹊楠远程看了一个Bug,解决过程曲折离奇,误打误撞才搞定,但是这Bug异常离谱(可能是我水平不够),故此记录一下
异常
报了一个NestedServletException
,提示NoSuchMethodError
,然后说是因为org.springframework.beans.factory.ListableBeanFactory.getBeanProvider
解决过程
1. 一步步排查
我首先是去找org.springframework.beans.factory.ListableBeanFactory.getBeanProvider
中的getBeanProvider
,看有没有导了这个包或者调用了该方法的,结果全局都没有
然后点进显示为蓝色的类,看看有没有啥问题
没办法,只能求助于伟大的互联网(bushi)
问了Chat
、找了CSDN
,都提到了可能是依赖冲突的问题,所以就去查pom.xml
,不过这项目的依赖貌似有蛮多重复的(重复引入相同的依赖,没有标注版本号,我觉得应该是没问题的),但怕是玄学的问题,所以还是一一把重复的注释调了,不出所料,还是会报错。
黔驴技穷力,但是鹊楠是搞前端的
这下只能从报错本身去排查了,头要秃了
2. 初现端倪
因为是依赖冲突的问题(可能),所以重点去排查jar
包的问题,一顿艰辛的排查,发现下图中的jar
包,感觉没见过的样子,所以就去maven
依赖库里面找,没想到还真有这个jar
包。
想着来都来了,干脆去把这个依赖换个新的试试看,于是就去官网Maven Repository找依赖
把原先的5.3.21
的换成最新的6.1.5
后,结果报错了
于是就找了5.2.x
的最新版5.2.25.RELEASE
换上去
换上去后,再次尝试,发现报错信息变了
3. 找到问题
发现是数据库相关的错误,而且是插入异常,就从异常接口一一去Debug
排查
结果找到问题,发现是这两个字段数据太长了,插不进去(数据库写的是varchar
)
于是将字段类型改为longtext
,再重新尝试后,问题终于解决,太难力
玄学的问题
解决问题后,想着看看到底是什么原因导致的(感觉不像是更换依赖版本的原因,因为两个的报错信息完全不同)
果不其然,在我换回先前的maven
版本后,并没有报错,
但是但是,在我直接改数据库字段类型为varchat
(之前数据太长还改不了,我先把数据清空了再改的),再次尝试后(没有中断程序),又报错了,报错信息和数据库没关系,而是最前面的那个错误,离大谱
觉得太奇怪了,于是我又更改版本为5.2.25.RELEASE
,报错信息变为和数据库相关的那个错误了
我不理解,大受震撼,问了Chat
,得到了牛头不对马嘴的回复。
不明白什么原因,所以在此记录一下,万一以后解决了呢😊