关于Exception in thread “main“ java.lang.NoSuchMethodError: 报错的解决方法
今天在进行项目框架搭建完成,启动测试的时候出现了这样的问题:
根据报错信息应该是spring框架中SpringFactoriesLoader这个类中的forDefaultResourceLocation方法不存在。
于是在依赖项中排查相应的maven库
分析springframework,发现在springframework:spring-core中是有这个方法的,
在5.323的版本中是没有的
这下破案了,应该是依赖时使用了错误的包,有的包使用的是5.323的版本,而有的使用的是6.04的版本,怎么解决呢?
使用了@Anakki在java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationAwareOrderComparator.sort-CSDN博客这篇文章中的方法查看了依赖结构
emmmmm,全部依赖的都是 6.0.4和6.1.0,这就奇怪了,为什么会爆出这样的错误呢,也没有看到什么错误的依赖
直接不作不休了,上maven文件夹把5.23的jar包删掉试试,如果报错就说明项目引用的实际上还是5.23
IDEA,启动!
有趣的事情发生了,还真是这个包的问题,可是我查了maven的依赖中并没有这个包啊?有没有大佬给点思路?
啊啊啊啊啊想起来了,我这是个多模块项目,刚才光盯着主模块看了,没想到可能是子模块的依赖项目出问题
我们直接对子模块进行依赖关系分析
还真是这个玩意引用了5.3.23的包,怎么个事,怎么别的项目都是6.04就它这么特殊?
原来是我创建子模块的时候手残了没有把spring boot的版本设置成跟主模块相同的3.02啊,那没事了。
重新设置好版本,运行maven clean,重新maven install
Yes,这回没有那个5.3.23了,WebApplition,启动!
啊这,问题不大问题不大,原来是我没设置数据库的url,先把这个在pom文件中注释掉……
成功运行好耶!
总结一下:浪费了好几个小时,最终发现是自己太粗心emmmmm,好在在解决问题的过程中学到了很多IDEA的使用方法和依赖问题的解决方案,所以说还算不亏?(但是这粗心的毛病什么时候能改改啊)