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

Tomcat中Jakarta REST服务运行出现404页面未找到问题求助

排查Jakarta REST服务404错误的可能原因

根据你提供的代码和截图,以下是几个核心排查方向:

1. 确认访问路径是否正确

你的HelloApplication设置了@ApplicationPath("/api"),HelloResource的@Path("/hello-world"),完整的访问路径应该是:

http://<服务器地址>:<端口>/<项目上下文根>/api/hello-world

从项目截图看,项目名称为generateur,默认上下文根通常与项目名一致,所以示例完整路径为:

http://localhost:8080/generateur/api/hello-world

检查你实际访问的URL是否符合该格式,重点确认上下文根和路径拼接是否正确。

2. 检查依赖是否完整

Jakarta REST需要API包+对应实现包才能正常运行:

  • 确保项目已引入jakarta.ws.rs-api依赖
  • 根据使用的服务器,添加匹配的REST实现依赖(如Jersey、RESTEasy)
    示例Maven依赖:
    <!-- Jakarta REST API -->
    <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- Jersey 实现(适用于Tomcat等轻量服务器) -->
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>3.1.5</version>
    </dependency>
    

3. 手动注册资源类

你的HelloApplication仅继承Application但未重写getClasses(),部分服务器不会自动扫描同包资源类,可手动注册:

package com.mpsoft.generateur;

import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/api")
public class HelloApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(HelloResource.class);
        return classes;
    }
}

4. 确认服务器兼容性

  • 若使用Tomcat,需Tomcat 10及以上版本才支持Jakarta EE(你的代码用jakarta.ws.rs包),Tomcat 9及以下仅支持Java EE(javax.ws.rs包),版本不匹配会导致注解无法被识别。
  • 查看服务器启动日志,确认项目是否成功部署,有无类加载失败、资源注册失败的报错。

5. 检查项目部署配置

确认项目部署的上下文根是否符合预期,部分IDE或服务器会修改上下文根配置,可在服务器配置文件(如Tomcat的server.xml)或IDE部署设置中查看。

内容的提问来源于stack exchange,提问作者Firas Chebbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:11:14