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

REST Web服务返回HTTP 404异常,如何解决该问题?

解决JAX-RS Web服务的HTTP 404异常问题

我来帮你一步步排查这个404问题,这是JAX-RS新手常遇到的几个典型场景:

1. 先纠正访问路径错误

你当前访问的是 /Restful_WebServices_Tuts/test/home,但你的接口类 HelloRS 上标注的@Path是/hello,正确的访问URL需要遵循这个结构:
[应用上下文路径] + @ApplicationPath值 + @Path值
也就是:
http://<你的主机>:<端口>/Restful_WebServices_Tuts/test/hello
先试试访问这个路径,大概率能直接解决问题。

2. 确保JAX-RS资源类被容器扫描到

Tomcat 8是Servlet 3.1容器,虽然支持注解驱动的JAX-RS部署,但有时候会出现资源类扫描不到的情况,你可以通过两种方式解决:

方式一:显式注册资源类

修改你的JAX_RS_Starter类,重写getClasses()方法,把HelloRS类手动注册进去:

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

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

方式二:配置JAX-RS实现的Servlet(以Jersey为例)

如果使用Jersey作为JAX-RS实现,你可以在web.xml中添加Servlet配置,确保容器能正确扫描到你的资源类:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>Restful WebServices Tuts</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<!-- 添加Jersey Servlet配置 -->
<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.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/test/*</url-pattern>
</servlet-mapping>
</web-app>

注意替换param-value中的内容为你HelloRS类实际所在的包名。

3. 检查依赖是否完整

Tomcat本身不自带JAX-RS的实现,所以你需要确保项目中包含了JAX-RS实现的依赖(比如Jersey或RESTEasy)。如果是Maven项目,添加Jersey的核心依赖:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.39.1</version> <!-- 选择合适的稳定版本 -->
</dependency>

4. 确认应用已正确部署

最后检查你的应用是否成功部署到Tomcat:

  • 查看Tomcat的webapps目录下是否存在Restful_WebServices_Tuts文件夹
  • 登录Tomcat管理控制台(默认路径/manager/html),确认你的应用状态为running

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:19:14