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

在Eclipse中使用Jersey时Tomcat返回404错误求助

Jersey接口返回404问题排查方案

问题场景

使用Eclipse创建Dynamic Web Project,按照JAX-RS(Jersey)教程开发后,项目index页面可正常访问,但Jersey接口始终返回404错误,尝试以下两个访问地址均无效:

  • http://localhost:8080/JerseyProject/rest/hello
  • http://localhost:8080/JerseyProject/hello

项目结构如下:
项目结构

核心排查步骤

1. 核对web.xml配置

确认web.xml中Jersey Servlet的映射规则与URL前缀匹配,同时包扫描路径正确:

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <!-- 替换为你的接口类所在包路径 -->
        <param-value>com.yourpackage</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <!-- 需匹配URL中的/rest前缀 -->
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

注意:param-value必须准确指向接口类所在包,否则Jersey无法扫描到服务类。

2. 检查接口类注解正确性

确认接口类的JAX-RS注解配置无误:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

// 类级别的Path需与URL中的/hello对应
@Path("/hello")
public class Hello {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello Jersey";
    }
}

确保@Path("/hello")标注在类上,@GET注解对应HTTP GET请求类型。

3. 验证依赖包完整性

检查项目WEB-INF/lib目录下是否包含Jersey核心依赖包,至少需要:

  • jersey-server.jar
  • jersey-container-servlet-core.jar
  • javax.ws.rs-api.jar
  • jersey-common.jar
    若手动导入包不要遗漏;若使用Maven,确认pom.xml的依赖配置完整。

4. 确认项目部署上下文路径

在Eclipse中右键项目 → Properties → Web Project Settings,核对Context root是否为JerseyProject,若路径不匹配,访问URL需对应调整。

5. 查看服务器启动日志

启动Tomcat后,查看控制台日志,排查是否存在Jersey初始化失败的报错(如包扫描失败、依赖缺失等),日志信息可直接定位问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:08