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

使用IntelliJ生成的Jakarta EE项目部署TomEE 9.0返回404错误

排查TomEE 9.0部署404问题的关键方向

1. 修正Jakarta EE API依赖范围

TomEE作为Jakarta EE容器,已内置Web Profile全套API实现。若项目中jakarta.servlet-api、jakarta.web.jsp-api等依赖的范围设为compile,打包时这些API会被打入WAR,与TomEE自带API冲突,导致部署异常引发404。

解决:在pom.xml(Maven)或build.gradle中,将这类API依赖的范围改为provided:

<!-- Maven示例配置 -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>

2. 验证TomEE部署状态与日志

  • 确认WAR已被TomEE正确解压至webapps目录,解压后的目录名称需与上下文路径完全一致(注意大小写敏感)。
  • 查看TomEE的logs/catalina.out或localhost.log,搜索部署失败的异常信息(如类加载错误、配置文件解析失败),404通常是部署未完成的表象。

3. 检查web.xml命名空间配置

若项目使用传统web.xml,需确保根元素使用Jakarta EE 9+命名空间,而非旧Java EE命名空间:

<!-- 正确的Jakarta EE命名空间 -->
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">

旧命名空间(http://xmlns.jcp.org/xml/ns/javaee)在TomEE 9中无法被正确识别,会导致应用初始化失败。

4. 排除IntelliJ部署配置干扰

  • 在IntelliJ的Run/Debug配置中,进入TomEE服务器的「Deployment」标签,确认「Application context」与访问URL路径完全匹配(如设为/demo,则访问地址应为http://localhost:8080/demo/index.jsp)。
  • 尝试手动将WAR复制到TomEE的webapps目录后启动服务器,排除IDE配置导致的部署异常。

5. 确认端口与根上下文配置

  • 检查TomEE使用的端口(默认8080),访问时不要混淆端口号。
  • 若将应用部署为ROOT.war,访问路径应为http://localhost:8080/index.jsp,无需额外上下文路径。

内容的提问来源于stack exchange,提问作者Hoki Min

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:50:53