SpringBoot服务访问出现java.lang.NoSuchMethodError异常的解决方案

异常信息:Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.PlainSelect.getGroupByColumnReferences()Ljava/util/List;

 

问题原因:我们这里是jsqlparser包下没有找到getGroupByColumnReferences方法。那我们通过idea提供的Diagrams(打开pom或gradle文件,然后在编辑区域右键选择Diagrams选项)依赖图来进行排查依赖问题。

mybatispluscore=3.4.3.4    jsqlparser=4.2   pagehelpler=5.1.4

我这边主要是更新了mybatispluscore的版本后,导致jsqlparser的版本过高导致的问题。这个问题的原因主要是 mybatispluscore和pagehelper共同依赖jsqlparser,但是依赖的所需版本不同导致。解决方案就是将依赖jsqlparser的其他依赖项共同升级更新即可。

 

Maven Repository仓库地址:https://mvnrepository.com/

 

经过依赖对比后,选为这2个版本,因为他们依赖的jsqlparser的版本都是4.2,版本一致。

compile 'com.github.pagehelper:pagehelper-spring-boot-starter:1.4.2'

compile 'com.baomidou:mybatis-plus-boot-starter:3.4.3.4'

 

最终,clean后重新reload imports下依赖,重启项目后访问应该就能解决这个问题了。

 

如果在window上启动没有问题,在linux或mac上启动也报找不到方法”nested exception is java.lang.NoSuchMethodError“问题,大致归为以下3种:

1. 第一种就是引入了同一个包的不同版本导致,保留为一个版本即可。

2. 第二种就是多个依赖包,间接依赖了不同版本的jar导致。上文就是针对这个问题的解决方案。

3. 第三种就是引入2个不同的jar包,下面的某个接口或类的包路径在所引入的2个jar包一致,这样就会偶发出现NoSuchMethodError异常。因为Java只知道你依赖的jar,所以需要确保不同jar的包名不要一致。否则会是埋坑,这种问题一版出现在自建基础共用依赖会导致这种情况。属于设计规范问题。

 

解决方案都是相似类似,本文通用,有问题留言。

 

posted @   星小梦  阅读(5979)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示