Tomcat 10.1+Java11环境下Servlet子页面访问404问题求助
问题解决步骤
核心原因:Tomcat版本与Servlet包不兼容
你使用的Tomcat 10.1.x属于Jakarta EE 9+版本,已完全从javax.servlet迁移到jakarta.servlet包,而你的代码仍使用旧的javax.servlet相关导入,导致Tomcat无法识别你的Servlet类,从而返回404错误。
具体修复操作
替换Maven依赖(若用Maven管理)
将原有的servlet-api依赖替换为Jakarta版本:<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency>修改Servlet代码的导入语句
把所有javax.servlet开头的导入替换为jakarta.servlet:package servlet; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/first") public class FirstServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.println("<html>"); pw.println("<body>"); pw.println("Welcome to servlet"); pw.println("</body>"); pw.println("</html>"); pw.close(); } }重新编译部署
执行mvn clean package,通过Smart Tomcat重新部署应用,或把生成的war包放入Tomcat的webapps目录后重启服务。
额外检查点
- 确认编译后的
FirstServlet.class文件存在于WEB-INF/classes/servlet/目录下,路径和文件无缺失。 - 检查Smart Tomcat插件配置:确保上下文路径设为
/,部署的是正确的项目输出目录或war包。 - 若尝试Tomcat 9,需对应使用
javax.servlet-api4.0版本依赖,同时确认类文件已正确部署到Tomcat目录中。
内容的提问来源于stack exchange,提问作者DoWhileFor
相关产品推荐
相关产品推荐

