Java RESTful GET请求无法访问,404错误排查求助
解决你的Jersey REST接口404错误问题
我来帮你排查几个新手用Jersey开发REST服务时常见的问题,应该能解决你的404错误:
1. 先确认Jersey依赖是否齐全
如果你的项目用Maven管理,确保pom.xml里已经引入了Jersey 2.x的核心依赖:
<dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.35</version> <!-- 建议使用最新稳定版 --> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> <version>2.35</version> </dependency> </dependencies>
如果是手动导jar包,要把这些核心jar放到WEB-INF/lib目录下,缺少依赖会导致服务无法正常初始化,接口自然找不到。
2. 修改web.xml的服务类配置方式
你现在在web.xml里指定了单个服务类,这种方式有时候会因为注解扫描不完整导致接口未被注册。换成扫描整个包的方式更可靠:
把原来的init-param替换成:
<init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.mycompany.lecture</param-value> </init-param>
这样Jersey会自动扫描com.mycompany.lecture包下所有带JAX-RS注解的类,确保你的LectureServices被正确识别。
3. 检查编译后的类是否部署到位
确认LectureServices.java编译后的.class文件已经在服务器的WEB-INF/classes/com/mycompany/lecture/目录下,如果class文件没部署上去,服务器找不到服务类肯定返回404。
4. 最后再核对请求路径
你的应用上下文是Lecture,Servlet映射是/app/*,加上类的@Path("/services")和方法的@Path("/sayhello"),请求路径http://localhost:8084/Lecture/app/services/sayhello是完全正确的,所以问题基本出在前面的配置或依赖上。
按照上面的步骤调整后,重启服务器再测试,应该就能正常返回"Hello im here"了。
内容的提问来源于stack exchange,提问作者Salma Yassin
相关产品推荐
相关产品推荐

