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

为什么在Tomcat中部署servlet后访问出现404/500错误

Servlet访问404/500问题排查方案

基础环境验证

  • 首先确认Tomcat服务启动正常,访问http://localhost:8080可以打开Tomcat默认欢迎页面,排除端口占用、服务启动失败的问题
  • 核对目录结构正确性:实际部署时要保证以下层级完全匹配,不要出现目录名拼写错误、大小写错误、多余空格:
Tomcat
└── webapps
    └── Servlet
        └── WEB-INF
            ├── web.xml 
            └── classes
                ├── HelloWorld.class 
                └── HelloWorld.java

注意WEB-INF必须全大写,不能少写横线或者写错大小写,否则Tomcat不会识别该目录下的配置。

代码与编译校验

  • 确认HelloWorld.class编译正常:编译时需要将Tomcat lib目录下的servlet-api.jar加入编译依赖,否则编译出的类会存在依赖缺失,触发500错误。编译参考命令:
    • Windows环境:javac -cp %CATALINA_HOME%\lib\servlet-api.jar HelloWorld.java
    • Linux/macOS环境:javac -cp $CATALINA_HOME/lib/servlet-api.jar HelloWorld.java
  • 如果你使用的是Tomcat 10及以上版本,原有代码里的javax.servlet相关包已经被替换为jakarta.servlet,需要把代码里的导入语句全部替换为jakarta前缀,否则会报类找不到的500错误。

配置文件校验

你提供的web.xml存在明显错误,开头多了一个多余的横杠-<web-app,这个符号会直接导致XML解析失败,删除多余横杠即可。其余配置逻辑是正确的:servlet-name上下匹配、url-pattern和访问路径匹配、无包名的类直接写类名即可,无需额外调整。

部署缓存校验

  • 所有配置、代码修改后必须重启Tomcat服务才会生效,如果开启了热部署也要确认热部署配置正常
  • 清理Tomcat缓存:删除Tomcat根目录下work/Catalina/localhost/Servlet文件夹后再重启服务,避免旧缓存影响访问

访问路径校验

你当前访问的路径是http://localhost:8080/Servlet/Hello,要保证webapps下的项目文件夹名就是Servlet,大小写完全匹配,Linux环境对路径大小写敏感,大小写不一致会直接返回404。

内容的提问来源于stack exchange,提问作者Matteo Pagliarello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:02