You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ开发Java EE应用时JSP正常但Servlet无法执行

问题核心原因

你遇到的问题根因是 Tomcat 10 版本的包命名空间变更:Tomcat 10 实现的是Jakarta EE 9+规范,原javax.servlet系列包全部重命名为jakarta.servlet,你当前代码中导入的javax.servlet包和Tomcat 10完全不兼容,Servlet不会被服务端识别注册,所以始终无法访问。


具体修复步骤
  1. 替换Servlet相关导入包
    将HelloServlet.java中原有javax开头的导入语句:
import javax.servlet.http.*;
import javax.servlet.annotation.*;

替换为jakarta开头的导入:

import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
  1. 修正代码逻辑缺陷
    你代码中声明的private String message;未做初始化赋值,即使Servlet访问正常也只会返回空内容,可新增init方法赋值:
@Override
public void init() {
    message = "Hello Servlet!";
}
  1. 简化注解配置
    @WebServlet注解不需要冗余配置,直接写路径即可:
@WebServlet("/helloServlet")
public class HelloServlet extends HttpServlet {
    // 你的业务代码
}
  1. (可选)web.xml配置适配
    如果你选择用web.xml配置而不是注解,需要保证web.xml头部声明对应Jakarta EE 9+规范,不要使用旧的Java EE 8及以下的schema声明。

后续新建项目避坑提示

在IntelliJ中新建Java Enterprise项目时,选择Tomcat 10作为应用服务器后,Java EE版本要对应选择Jakarta EE 9及以上版本,自动生成的脚手架代码会默认使用jakarta系列包,不会再出现该兼容问题。

内容的提问来源于stack exchange,提问作者Anil Narlapally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:00:04