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

Java API请求返回404错误求助:Jersey项目接口无法访问

解决Jersey 2.29.1接口404问题(访问http://localhost:8080/JavaApp/rest/hello报错)

结合你提供的代码和配置,我来梳理几个最可能的问题点和对应的修复方案:

1. 资源类包路径不匹配(最常见原因)

你的web.xml中配置了Jersey要扫描的包:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.test.api</param-value>
</init-param>

请确认你的Hello类是否真的在com.test.api这个包下。如果类的实际包名是其他(比如com.example.api),要么把类移动到com.test.api包,要么修改上述param-value的值为类所在的正确包名。Jersey只有扫描到带@Path注解的类,才能注册对应的接口路径。

2. XML声明语法错误(虽不直接导致404,但需修复避免后续问题)

你在sayHello()方法里返回的XML字符串有语法错误:

String recources="<? xml version='1.0' ?>" + "<hello>Hi, This is hello from XML</hello>";

<?和xml之间多了一个空格,这会导致返回的XML无效,应该改成:

String recources="<?xml version='1.0' ?>" + "<hello>Hi, This is hello from XML</hello>";

3. 确认Jersey依赖是否完整

检查你的项目依赖是否包含Jersey Servlet容器的核心包,如果用Maven的话,需要确保以下依赖存在:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.29.1</version>
</dependency>

如果缺失这个依赖,Tomcat会找不到org.glassfish.jersey.servlet.ServletContainer类,导致初始化失败,最终出现404错误。

4. 验证Web应用上下文路径是否正确

确认你的项目部署到Tomcat后的上下文路径确实是JavaApp。有时候IDE部署时会自动添加版本号(比如JavaApp-1.0),你可以通过Tomcat的管理页面查看已部署应用的上下文路径,或者直接访问http://localhost:8080查看应用列表,确保访问路径中的上下文路径和实际部署的一致。

5. 检查注解导入是否正确

确保Hello类的@Path、@GET、@Produces注解都是导入的JAX-RS的标准包(Jersey 2.x基于JAX-RS 2.x):

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

如果导入了其他框架的同名注解,Jersey无法识别这个资源类,也会导致404。

按照上述步骤逐一排查,应该能解决你的404问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:22:29