Tomcat中出现java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/Config错误
解决Spring Boot 3 + Tomcat 10下JSTL依赖失效问题
你遇到的核心问题是依赖的JSTL版本与Tomcat 10、Spring Boot 3的Jakarta EE规范不兼容。
Tomcat 10及以上版本已经从Java EE迁移到Jakarta EE规范,所有API包名从javax.*改为jakarta.*,而你当前引入的是基于旧Java EE的JSTL依赖,自然无法在Tomcat 10环境中正常工作。
解决步骤:
替换JSTL依赖
把pom.xml中原来的JSTL依赖替换为Jakarta版本的:<dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency>前者是API定义包,后者是具体实现包,两者配合才能让JSTL标签正常生效。
验证JSP中的taglib声明
确保JSP页面的taglib引用是Jakarta版本的:<%@ taglib prefix="c" uri="jakarta.tags.core" %>不要继续使用旧的
http://java.sun.com/jsp/jstl/core地址。重新构建部署
执行mvn clean package重新打包项目,部署到Tomcat 10中测试视图渲染。
补充说明:
Spring Boot 3.0.x本身基于Jakarta EE 9构建,和Tomcat 10的规范完全匹配,替换正确的依赖后,控制器返回视图时的JSTL相关错误就能解决。
内容的提问来源于stack exchange,提问作者Shadow504
相关产品推荐
相关产品推荐

