在Eclipse中使用Jersey时Tomcat返回404错误求助
Jersey接口返回404问题排查方案
问题场景
使用Eclipse创建Dynamic Web Project,按照JAX-RS(Jersey)教程开发后,项目index页面可正常访问,但Jersey接口始终返回404错误,尝试以下两个访问地址均无效:
http://localhost:8080/JerseyProject/rest/hellohttp://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
相关产品推荐
相关产品推荐

