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的包名不要一致。否则会是埋坑,这种问题一版出现在自建基础共用依赖会导致这种情况。属于设计规范问题。
解决方案都是相似类似,本文通用,有问题留言。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~