Spring Boot 3.4.0升级后出现NoSuchFieldError问题求助
解决Spring Boot 3.4.0升级后
java.lang.NoSuchFieldError问题 问题根源
Spring Framework 6.1(对应Spring Boot 3.4.x版本)中,org.springframework.util.SystemPropertyUtils类的ESCAPE_CHARACTER静态字段已被移除。若项目中存在依赖库仍引用旧版本的spring-core(低于6.1),就会因版本不兼容触发该错误。
排查依赖冲突步骤
- 执行Maven命令生成依赖树,精准定位
spring-core的版本冲突:
查看输出结果,找出所有引入非6.1.x版本mvn dependency:tree -Dverbose -Dincludes=org.springframework:spring-corespring-core的依赖包。 - 若使用IDEA等IDE,可直接打开Maven面板,进入「Dependencies」搜索
spring-core,通过「Show Dependencies」功能查看依赖的层级关系,定位冲突来源。
冲突解决方法
- 排除旧版本依赖:针对引入旧版
spring-core的依赖,添加排除规则,强制使用Spring Boot父POM管理的版本:<dependency> <groupId>冲突依赖的groupId</groupId> <artifactId>冲突依赖的artifactId</artifactId> <version>冲突依赖的version</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> - 统一版本管理:确保项目POM继承Spring Boot父POM,且不手动指定
spring-core、spring-context等核心Spring库的版本,完全依赖父POM的版本仲裁。
验证修复
重新执行mvn dependency:tree命令,确认所有spring-core依赖均为Spring Boot 3.4.0对应的6.1.x版本,随后重启项目即可。
内容的提问来源于stack exchange,提问作者JavaGeek
相关产品推荐
相关产品推荐

