【复盘】记一次 springboot启动错误Exception in thread "main" java.lang.NoSuchMethodError

启动时报错:

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationAwareOrderComparator.sort(Ljava/util/List;)V

 

遇到问题不要第一时间面向搜索引擎编程,自己先分析一下:

 

如上log 可以得到的信息:

1. 某个方法没找到

2. 是 spring core 包里的某个方法

 

推测思路:

1. 依赖的jar 包有这个方法,但是 maven 可以依赖拉取不全。

    把 maven 本地仓库清理,重新 update。 发现问题仍然没解决。

 

2. 依赖的 jar 包版本有问题。

    根据 org.springframework.core  这个路径去本地仓库看看引的包版本,发现引的 spring 2.x 版本,

    而项目里的 springboot 是2.x, 对应 spring 版本应该是5.x。

    

  

    解决:

    用  mvn dependency:tree  命令列出所有依赖层级, 找到 spring 2.x 的版本。

 

对应依赖进行排除:

更新,搞定!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot应用程序在启动时抛出`java.lang.NoSuchMethodError`异常,通常意味着你在运行时的Java环境中找不到某个类或方法,而这个方法是你的程序或者依赖中某个库所必需的。这可能是由于以下几个原因: 1. **版本冲突**:你的项目可能包含了多个版本的相同库,而在运行时,两个版本之间对于某些方法的定义不兼容。 2. **类路径问题**:确保所有的依赖和库都在类路径(classpath)中正确配置,且版本正确匹配。 3. **环境变量**:检查构建工具(如Maven或Gradle)的配置,确保环境变量设置正确,特别是JDK的路径。 4. **IDE问题**:IDE如IntelliJ IDEA可能会自动添加一些插件或代理类,检查这些设置是否影响到了类的加载。 5. **混淆或打包问题**:如果使用了混淆或插件,确认它们不会混淆或移除重要方法。 要解决这个问题,你可以尝试以下步骤: - **查看错误堆栈**:仔细阅读异常堆栈信息,找出具体哪个方法找不到。 - **更新依赖**:检查是否有版本升级或降级的需要,确保所有依赖都是最新且兼容的。 - **排除第三方库**:逐个排除怀疑的第三方库,看看哪一个是冲突源。 - **清理并重新构建**:删除本地缓存,重建项目以确保所有资源都被正确处理。 - **使用日志帮助诊断**:启用详细的日志,有助于找到引发错误的具体代码行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值