• 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的包名不要一致。否则会是埋坑,这种问题一版出现在自建基础共用依赖会导致这种情况。属于设计规范问题。

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

  • 相关阅读:
    webapp开发绝对定位引发的问题
    git下配置github sshkey
    html5 filereader读取流注意事项
    神奇的负Margin
    泪奔的ie
    第二次作业-实践一 网络攻防环境的搭建
    20199115 2019-2020-2 《网络攻防实践》第一周作业
    《网络攻防实践》寒假作业
    C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
    getline()函数
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/16252385.html
Copyright © 2020-2023  润新知