当前位置: 首页 > news >正文

升级mybatis-plus导致项目启动报错: net.sf.jsqlparser.statement.select.SelectBody

由于mybatis-plus的3.5.6及以下版本存在SQL注入漏洞,所以把系统的mybatis-plus版本升级到了3.5.7,项目启动时,后台日志报错:nested exception is java.lang.NoClassDefFoundError::net.sf.jsqlparser.statement.select.SelectBody

详细分析:

1. 错误问题:

ClassNotFoundException是Java的常见异常,表示JVM在类路径中找不到指定的类。
NoClassDefFoundError 表示在编译时能找到类,但在运行时无法加载所需的类。
net.sf.jsqlparser.statement.select.SelectBody是JSqlParser库中的类,用于解析SQL的SELECT语句结构。

2. 可能原因‌:

  • 依赖未正确引入‌:项目未添加JSqlParser的依赖,或依赖版本错误。
  • 依赖冲突‌:项目中存在多个不同版本的JSqlParser,导致类加载失败
  • 打包问题‌:构建工具(如Maven/Gradle)未将依赖正确打包到最终产物中。

3. 解决方案‌:

‌检查maven依赖配置‌:
确保pom.xml(Maven)或build.gradle(Gradle)中包含正确的JSqlParser依赖。
经过排查升级的mybatis-plus-boot-starter包和系统中存在的分页jar包pagehelper-spring-boot-starter都存在jsqlparser包,两个版本不一致导致的系统报错,所以排除掉升级包中的对应jsqlparser即可。

方式一:排除冲突依赖

<!-- 新升级的mybatis-plus -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version><exclusions><exclusion><groupId>com.github.jsqlparser</groupId><!--排除掉冲突包 --><artifactId>jsqlparser</artifactId></exclusion></exclusions> 
</dependency><!-- pagehelper分页包 -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.1</version>
</dependency>

方法二:调整依赖顺序‌

<!-- PageHelper放在MyBatis Plus上面 -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>最新版本</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version>
</dependency>

4. 总结:
项目启动时报错nested exception is java.lang.NoClassDefFoundError:,除了未正确引入jar包外,也有可能是多个jar包之间存在不同版本的依赖冲突,本次报错就是依赖冲突导致的,所以在排除maven报错时需要额外注意不同版本可能引起的冲突。

http://www.dtcms.com/a/565239.html

相关文章:

  • 线性代数 - 线性方程组的原始解法(高斯消元法)
  • 深入 Lua 环境机制:全局变量的 “容器” 与 “隔离术”
  • 利用Github与Hexo搭建属于自己的在线个人博客
  • 哪些网上订餐的网站做的好模板网站 建设教材
  • 【每天一个AI小知识】:什么是零样本学习?
  • 清理WSL2下的docker磁盘docker_data.vhdx的长期增长的容量问题
  • AOI在化学药剂检测领域中的应用
  • 【IC】NoC设计入门 -- 拓扑
  • wordpress主题怎么选电商seo搜索引擎优化
  • DGX Spark 恢复系统
  • 【分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
  • 绵阳网站推广排名新网站快速排名软件
  • 矿山通信如何实现全域一体化?迈威为煤矿装上了“智慧神经网络”
  • 不止于Linux:百花齐放的开源世界与社区的力量
  • python grammar : case sensitive, python Python
  • leetcode--hot100--思路+知识点(II)
  • react antdesign实现表格嵌套表单
  • 3D 技术赋能制造企业精准高效装配生产
  • 山东网站建设app江门住房和城乡建设部网站
  • 数据线厂家东莞网站建设wordpress mysql用户名
  • 4G摄像头行业新风向:AI+低功耗+全球化驱动
  • IDEA / DataGrip 连接 SQL Server 提示“驱动程序无法通过 SSL 加密建立安全连接”的解决方法
  • 【11408学习记录】制胜考研英语阅读:拆解2018真题长难句(含三步核心分析法)​
  • # 数学符号参考手册大全
  • Dremio查询加速技术全解析
  • 黄页营销网站视频免费大全免费的网站模板下载
  • Go语言设计模式:观察者模式详解
  • 什么是音频码率?音频码率128kbps怎么设置?
  • 2026版基于python大数据的旅游可视化及推荐系统
  • 企业财务智能体架构解析:从RPA自动化到AI风控协同