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

Maven项目调用REST GET服务返回404错误,请求排查原因

REST GET服务返回"not found"错误的排查与修复

问题根源与修复步骤

1. Servlet名称不匹配(web.xml配置错误)

你的web.xml中,定义的Servlet名称是jersey-servlet,但Servlet映射引用的名称是Jersey Web Application,两者不一致导致请求无法被Jersey容器处理。

修复代码:

<!-- 修改后的servlet-mapping -->
<servlet-mapping>
    <servlet-name>jersey-servlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

2. 路径重复导致URL匹配失败

Java类Rest上标注了@Path("/rest"),同时web.xml中Servlet映射的url-pattern是/rest/*,这会让实际有效路径变成/rest/rest/getuser,而你调用的/rest/getuser无法匹配。

修复方案二选一:

  • 方案一:移除类上的@Path("/rest")注解,保持方法上的@Path("/getuser")
    package com;
    
    import jakarta.ws.rs.GET; 
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    // 移除类级别的@Path("/rest")
    public class Rest
    {
        @GET
        @Path("/getuser")
        @Produces(MediaType.APPLICATION_JSON)
        public User getUser()
        {
            User u = new User();
            u.setName("carmine");
            u.setSurname("armenante");
            
            System.out.println("sono dentro");
            return u;
        }
    }
    
  • 方案二:将web.xml中的url-pattern改为/*,保留类上的@Path("/rest")

3. 缺失JSON序列化依赖

你启用了POJOMappingFeature,但当前pom.xml中缺少Jersey处理JSON的核心依赖,即使路径修复,后续也会出现序列化错误。

修复代码:在pom.xml的<dependencies>中添加:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>3.1.3</version>
</dependency>

4. User类需满足序列化要求

确保User类具备无参构造函数和所有属性的getter方法,否则JSON序列化会失败:

package com;

public class User {
    private String name;
    private String surname;

    // 必须提供无参构造
    public User() {}

    // getter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }
}

验证

完成以上修改后,重新部署项目,调用原请求URL:http://localhost:8080/ProvaMaven-0.0.1-SNAPSHOT/rest/getuser即可正常获取JSON响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:08:10