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

IntelliJ创建的Jakarta EE项目在Tomcat中返回404,GlassFish可正常运行

问题:Jakarta EE Web应用部署到Tomcat后点击链接触发404,GlassFish运行正常

问题详情

使用IntelliJ IDEA创建全新的Jakarta EE Web应用,未修改任何默认生成文件。通过war:exploded工件部署到Tomcat服务器后,仅能访问首页,点击首页默认链接时出现404错误;但相同配置部署到GlassFish服务器时,所有功能均正常运行。

复现步骤

  • 使用IntelliJ IDEA创建新项目
  • 创建Tomcat配置,在部署选项卡中选择war:exploded工件
  • 运行部署并在浏览器中访问对应URL
  • 点击页面上的默认链接
  • 出现404错误
  • 为同一应用配置GlassFish服务器并运行
  • 页面功能正常

已尝试操作

尝试更换所有可用部署工件,问题仍未解决。

解决建议

1. 核对Servlet路径映射与上下文根

  • 检查项目中web.xml或@WebServlet注解的路径配置,确保链接指向的路径与Servlet映射完全匹配。Tomcat对路径匹配规则严格,若使用相对路径,需确认IntelliJ IDEA中Tomcat部署的上下文根设置是否与访问路径前缀一致。
  • 例如,若上下文根设为/myapp,则链接需指向/myapp/xxx,而非直接/xxx。

2. 确认Tomcat版本与Jakarta EE兼容性

  • Jakarta EE 9及以上版本使用jakarta.*包名,Tomcat 9及以下仅支持javax.*的EE API。若项目为Jakarta EE 9+,必须使用Tomcat 10及以上版本,否则会因API包不兼容导致Servlet无法被识别,触发404错误。

3. 检查war:exploded工件完整性

  • 前往项目输出目录(通常为out/artifacts/[项目名]_war_exploded/),确认WEB-INF/classes目录下存在编译后的class文件,WEB-INF/lib包含必要依赖,且所有静态资源、配置文件齐全。若文件缺失,需重新构建工件。

4. 调整IntelliJ IDEA部署配置

  • 在Tomcat运行配置的部署选项卡中,重新添加war:exploded工件,确保部署路径指向Tomcat的webapps目录或正确的虚拟路径。
  • 尝试勾选**"On 'Update' action"和"On frame deactivation"选项为"Update resources"或"Redeploy"**,避免部署缓存导致的问题。

内容的提问来源于stack exchange,提问作者Pavlos Orfanidis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:10:33