Tomcat 10.1.6部署Web应用时遇jakarta.servlet.jsp.JspFactory类找不到问题求助
解决Tomcat 10.1.6中
jakarta.servlet.jsp.JspFactory类找不到的问题 核心原因
jakarta.servlet.jsp.JspFactory属于Jakarta JSP API包,你的Maven依赖中缺少JSP API的依赖配置,同时手动放置JSTL jar的操作与Maven依赖管理存在冲突。
具体修复步骤
1. 调整Maven依赖配置
修改pom.xml,保留必要依赖并移除重复项:
<!-- Jakarta EE Web API(已包含Servlet、JSP、EL等核心API,无需单独重复引入) --> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-web-api</artifactId> <version>10.0.0</version> <scope>provided</scope> </dependency> <!-- JSTL实现依赖(Tomcat默认不包含,需打包到应用中) --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>3.0.1</version> </dependency>
- 移除单独的
jakarta.servlet-api和jakarta.el-api依赖:jakarta.jakartaee-web-api已包含这些核心API,重复引入易引发版本冲突。 - 去掉JSTL依赖的
providedscope:Tomcat不内置JSTL实现,需将其打包到WEB-INF/lib。
2. 清理手动添加的Jar包
删除WEB-INF/lib目录下你手动放入的jakarta.servlet.jsp.jstl-3.0.1.jar和jakarta.servlet.jsp.jstl-api-3.0.0.jar,由Maven自动管理依赖打包,避免版本不一致或重复依赖问题。
3. 重新构建部署
- 在Eclipse中执行
Maven > Clean,再执行Maven > Install,确保依赖正确下载并打包。 - 重新部署应用到Tomcat 10.1.6,启动服务器验证错误是否消除。
额外说明
Tomcat 10.1.x对应Jakarta EE 10规范,jakarta.jakartaee-web-api:10.0.0是匹配版本,确保所有依赖版本符合Jakarta EE 10要求,避免跨版本依赖引发类路径问题。
内容的提问来源于stack exchange,提问作者Karen Goh
相关产品推荐
相关产品推荐

