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

JakartaEE开发RESTful API访问404及TomEE部署失败问题求助

根因分析

1. 原生Tomcat环境404原因

原生Tomcat是轻量级Servlet容器,仅实现了Jakarta EE规范中的Servlet、JSP等基础Web组件,没有内置JAX-RS(RESTful API规范)的实现包。你在pom中引入的jakarta.jakartaee-web-api仅为API接口包,scope设置为provided意味着依赖由运行环境提供,但Tomcat本身没有提供对应实现,所以你的REST资源类不会被识别加载,访问对应路径自然返回404。

2. TomEE环境启动失败原因

报错信息Unsupported class file major version 60是版本不兼容导致:

  • Class文件major version 60对应Java 16编译的类版本
  • 你当前使用的TomEE版本依赖的是xbean-asm7,ASM 7最高仅支持解析Java 13及以下版本编译的Class文件,无法识别Java 16的类格式,因此注解扫描阶段直接报错,应用无法启动。
解决方案
  • 方案一:继续使用原生Tomcat
    手动添加JAX-RS实现依赖到pom.xml,比如 Jersey 或者 RestEasy 的Jakarta EE 9+适配版本,无需设置provided scope;同时新增JAX-RS激活配置类,继承jakarta.ws.rs.core.Application并添加@ApplicationPath("/api")注解,确保REST路径被正确映射。
  • 方案二:继续使用TomEE
    二选一操作即可:
    • 将项目编译版本降至Java 11(major version 55,匹配ASM7的支持范围),修改pom.xml中maven-compiler-plugin的source、target配置为11
    • 升级TomEE到9.0及以上的新版本,新版本内置更高版本的ASM库,支持Java 16及以上版本的类解析
通用排查步骤
  • 查看服务logs/catalina.out启动日志,确认是否有REST资源类加载的相关日志,以及是否存在隐藏的启动报错
  • 核对路径拼接规则:完整接口路径 = 应用上下文路径 + @ApplicationPath注解值 + 资源类@Path注解值 + 方法@Path注解值
  • 检查maven编译配置,确认编译的Java版本与服务运行的Java版本一致

内容的提问来源于stack exchange,提问作者LuckyTriple Smile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:24:03