news 2026/2/1 11:43:37

使用高版本SpringBoot导致Junit5的NoSuchMethodError的错误

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用高版本SpringBoot导致Junit5的NoSuchMethodError的错误

关于作者:

一个深耕自己,不内耗的长期主义者。一个对技术充满激情,对工作对生活充满热情的热血青年。坚信,真正能让大家看懂的技术文章才是好文章,坚持用通俗易懂的大白话写技术文章,并会持续更新。

一、问题现象和分析:

先说下具体现象:大部分都是在做第三阶段第6章MyBatis的springboot-mybatis-quickstart这个项目的单元测试时会遇到这个错误

分析:由于使用IDEA创建SpringBoot项目时,它默认只能选择最近最新的几个SpringBoot的版本,所以你只能选择比较新的版本,目前它默认是4.0.2的版本,你如果不选的话,使用默认的,那创建出来的项目使用的就是SpringBoot4.0.2版本

而较高版本的Spring Boot,比如4.x,默认使用较新版本的JUnit 5

但是,IDEA 呢,咱们使用的是IntelliJ IDEA 2024.1这个版本,为什么统一使用这个版本,咱们之前也说过,是因为经过老师的测试,目前来说这个版本是相对来说较稳定的一个版本,2025的版本多多少少都会有一些小bug,所以咱们统一使用的2024.1这个版本

而IntelliJ IDEA 2024.1 虽然是较新的版本,但可能仍未完全兼容Spring Boot 4.0.2 所依赖的 JUnit Platform 的最新 API 变化,所以就会导致在运行单元测试时,IDEA 内置的测试执行器调用了一个已变更或移除的方法,例如 ReflectionUtils.getDefaultClassLoader(),从而抛出以下的异常:

二、最终的解决方案:

最简单的解决方案就是,直接复制我下面提供的这个pom.xml内容,替换你当前项目里pom.xml的内容,我提供的这个pom里使用的SpringBoot版本使用的和咱们课程里是一样的都是3.2.8的版本,这个版本里依赖的单元测试对2024.1的IDEA 是兼容的

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.8</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.itheima</groupId> <artifactId>springboot-mybatis-quickstart</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-mybatis-quickstart</name> <description>springboot-mybatis-quickstart</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <version>3.0.3</version> <scope>test</scope> </dependency> <!--数据库连接 Druid-spring-boot-starter--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.19</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>

或者也可以去老师给的课程资料里,找到springboot-mybatis-quickstart这个项目,把对应的pom.xml文件的内容直接复制过来,替换你当前项目里pom.xml的内容

然后,一定一定要记得刷新maven,你不刷新,是不会生效的

刷新完之后,再去运行你的单元测试,发现就可以了

如果这篇文章对你有所启发或帮助,希望可以花费你一秒钟的时间,点亮【赞和推荐】,如果能点【分享】给更多同行的人,那就更好了。你的每一个互动,都是我持续创作的最大动力。感恩遇见,感谢陪伴。

往日精选

分文件夹去存文件,其实就是哈希存储的思想

哈希冲突不可避免吗?哈希思想太重要了

聊明白:同步刷盘、异步刷盘以及MQ刷盘策略

对象在内存中的分配、布局、访问、GC垃圾回收

ThreadLocal:原理、内存泄漏、源码分析

大白话聊明白多线程的基础,Java线程的状态和转换

大白话聊聊常见的IO模型:BIO、NIO和IO多路复用

大白话聊懂IO的零拷贝技术

大白话搞懂Java中Synchronized的逻辑

大白话聊一聊,数据结构的基石:数组和链表

大白话聊一聊,常用的哈希算法

对接第三方支付常用到的 对称加密和非对称加密

大白话聊明白Thread、Runnable、FutureTask和Callable之间的关系

每秒百万ID不重复!SnowFlake雪花算法的原理揭秘

用通俗易懂的大白话彻底搞明白SQL中的group by

大白话让你彻底搞明白Java里的Lambda表达式

一篇搞懂ASM、字节码和动态代理,到底咋回事?

为什么Spring不用静态代理?静态代理的三大硬伤!

大白话搞懂Java反射的黑魔法!为啥框架都爱用它?

MySQL索引长度限制和索引长度到底怎么计算

JDK的Proxy vs CGLIB两种动态代理的武林秘籍

Spring注册Bean别只用@Component了 @Import才是秘密武器


关于作者:

一个深耕自己,不内耗的长期主义者。一个对技术充满激情,对工作对生活充满热情的热血青年。坚持用通俗易懂的大白话写技术博文,杜绝复制来复制去没营养的内容,坚持用大白话分享自己总结的Java知识,并会持续更新。

点击下方 微信公众号,获取更多Java干货

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/31 12:53:10

JSON反序列化漏洞专题

第一部分&#xff1a;开篇明义 —— 定义、价值与目标 定位与价值 在现代化的Web应用、微服务架构以及数据交换场景中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09; 凭借其轻量、易读、易解析的特性&#xff0c;已成为事实上的序列化数据交换标准。然…

作者头像 李华
网站建设 2026/1/31 20:08:30

好写作AI:人文社科论文的“批判性思维”如何与AI辅助共生

批判性思维&#xff1a;人文社科论文的灵魂所在 “你的论文缺乏批判性思考。” “这只是在描述和罗列观点&#xff0c;没有自己的分析和立场。” 对于人文社科的学生而言&#xff0c;上述评语可能比任何技术性错误都更具挫败感。批判性思维——即质疑假设、分析论证、评估证据…

作者头像 李华
网站建设 2026/1/30 10:45:52

Libvio.link反爬机制深度解析与突破策略

Libvio.link作为动态内容分发平台&#xff0c;其反爬体系融合了行为分析、设备指纹、动态加密等多重技术&#xff0c;对数据抓取构成显著挑战。本文将从反爬机制拆解入手&#xff0c;系统梳理Cookie验证、JS混淆、请求频率限制等核心障碍&#xff0c;结合实战代码与工具链&…

作者头像 李华
网站建设 2026/1/30 10:44:38

Claude Skills 实战:推荐 5 个高质量 Skills

这段时间在深入使用Claude Skills&#xff08;Agent Skills&#xff09;的过程中&#xff0c;我逐步形成了一套“可组合、可复用、可自动化”的 Skills 使用体系。 很多朋友在问&#xff1a;Claude Skills 到底该怎么选&#xff1f;哪些是真的能提升效率&#xff0c;而不是玩具…

作者头像 李华
网站建设 2026/1/30 10:40:08

好写作AI:AI辅助学术创新的边界——以研究缺口自动识别为例

创新起点&#xff1a;当AI开始“阅读”知识地图的空白“这个领域还有什么可研究的&#xff1f;” “我的论文创新点到底在哪里&#xff1f;”每一个学术研究者都曾面对这样的根本性质问。学术创新的核心&#xff0c;往往始于对现有知识版图中未被探索或未被充分探索的“缺口”的…

作者头像 李华
网站建设 2026/1/30 10:39:16

书匠策AI:教育论文数据分析的“魔法罗盘”,让数据开口说真话

在学术写作的江湖里&#xff0c;数据是“武林秘籍”&#xff0c;但如何让数据从“哑巴”变成“故事大王”&#xff1f;传统工具要么门槛高得像珠峰&#xff0c;要么功能单一得像算盘&#xff0c;让无数研究者望而却步。直到书匠策AI横空出世——它像一位手持魔法罗盘的探险家&a…

作者头像 李华