Spring 6 MVC部署Tomcat 10启动报NoSuchMethodError问题求助
解决Spring 6 MVC在Tomcat 10启动时的NoSuchMethodError异常
问题根源
你的Spring依赖版本存在不一致情况:spring-core-6.0.10.jar和spring-jcl-6.0.10.jar为6.0.x版本,而其他Spring组件(如spring-webmvc、spring-beans等)均为6.1.6版本。NamedThreadLocal.withInitial(String, Supplier)方法是Spring 6.1版本新增的,低版本的spring-core不包含该方法,导致高版本组件调用时抛出NoSuchMethodError。
解决方案
- 统一Spring依赖版本:将
spring-core和spring-jcl升级至6.1.6版本,确保所有Spring组件版本完全一致。 - 清理冲突依赖:检查项目中是否存在其他旧版本Spring Jar包,仅保留统一版本的依赖文件。
- 替换Servlet API为稳定版:你当前使用的
jakarta.servlet-api-6.1.0-M2是里程碑版本,建议替换为6.0.0稳定版,减少潜在兼容性问题。
修正后的核心依赖示例
- aspectjweaver-1.9.22.jar
- jakarta.servlet-api-6.0.0.jar
- jakarta.servlet.jsp-api-4.0.0.jar
- jstl-1.2.jar
- micrometer-commons-1.12.5.jar
- micrometer-observation-1.12.5.jar
- spring-aop-6.1.6.jar
- spring-aspects-6.1.6.jar
- spring-beans-6.1.6.jar
- spring-context-6.1.6.jar
- spring-core-6.1.6.jar
- spring-expression-6.1.6.jar
- spring-jcl-6.1.6.jar
- spring-web-6.1.6.jar
- spring-webmvc-6.1.6.jar
验证步骤
- 替换所有版本不一致的Spring Jar包为6.1.6版本
- 清理Tomcat的
webapps目录和work目录,清除旧缓存 - 重新部署应用至Tomcat 10并启动
内容的提问来源于stack exchange,提问作者IT Dept
相关产品推荐
相关产品推荐

