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

Jersey未注册资源:Spring Boot 2.0.0集成Jersey遇404错误

排查Spring Boot + Jersey 404错误的解决方案

结合你给出的代码片段,我整理了几个最可能导致404的原因和对应的修复方法:

1. 主类缺少@SpringBootApplication注解

你的主类App没有添加@SpringBootApplication注解,这是Spring Boot应用的核心注解——负责启用自动配置、组件扫描等关键功能。没有它,Spring无法识别并加载你的Jersey配置类和资源类,自然找不到接口路径。

修复后的主类代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

2. 资源类缺少必要的Jersey注解

你的FileResource类代码不完整,Jersey资源类必须满足两个核心条件才能被正确映射:

  • 类上添加@Path注解,指定该资源的基础路径(比如@Path("/files"))
  • 接口方法上添加HTTP方法注解(比如@GET、@POST),还可以通过@Path进一步细分接口路径

示例完整资源类:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;

@Component
@Path("/files")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class FileResource {

    @GET
    @Path("/list")
    public String getFileList() {
        return "{\"files\": [\"file1.txt\", \"file2.jpg\"]}";
    }
}

3. 确保引入了Jersey Starter依赖

Spring Boot 2.x整合Jersey需要引入官方的starter依赖,否则Jersey的自动配置不会生效。在你的构建文件中添加以下依赖:

Maven(pom.xml):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jersey</artifactId>
</dependency>

Gradle(build.gradle):

implementation 'org.springframework.boot:spring-boot-starter-jersey'

4. 确认组件扫描范围

如果你的JerseyConfig或FileResource不在主类App的同包或子包下,需要在@SpringBootApplication中明确指定扫描路径:

@SpringBootApplication(scanBasePackages = "com.yourpackage")
public class App {
    // ...
}

完成以上修复后,重启应用,访问http://localhost:8080/api/files/list(根据你定义的路径调整)应该就能正常调用接口了。

内容的提问来源于stack exchange,提问作者Paweł Adamski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:31