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

排查jsr311-api-1.1.1依赖归属及解决NoSuchMethodError异常

问题分析与解决方案

一、哪些依赖需要引入jsr311-api-1.1.1?

jsr311-api-1.1.1是JAX-RS 1.1规范的API包,主要是基于JAX-RS 1.x的REST框架实现会依赖它:

  • 比如早期版本的Jersey(1.x系列,比如Jersey 1.19.4),它的核心依赖会间接引入这个API包;
  • 如果你在开发基于JAX-RS 1.1规范的REST服务,也需要手动把它作为编译依赖引入,确保代码能调用JAX-RS 1.1的接口。

二、解决java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()报错

这个报错的核心原因是JAX-RS API版本冲突:

  • getProperties()方法是JAX-RS 2.0规范才新增的接口方法,对应的API包是javax.ws.rs-api(版本2.0及以上);
  • 但你的项目里同时存在JAX-RS 1.1的API(jsr311-api-1.1.1)和JAX-RS 2.x的实现(比如Jersey 2.x),运行时JVM加载了旧的API类,导致找不到新方法。

具体解决步骤:

  1. 排查依赖冲突

    • 用Maven执行命令:mvn dependency:tree,或者Gradle执行:gradle dependencies,查看依赖树里是否同时存在jsr311-api(1.1.1版本)和javax.ws.rs-api(2.x版本)。
  2. 统一JAX-RS版本

    • 如果你的项目用的是Jersey 2.x或其他JAX-RS 2.x实现:
      移除jsr311-api-1.1.1依赖,改用JAX-RS 2.x的API包,比如:
      <dependency>
          <groupId>javax.ws.rs</groupId>
          <artifactId>javax.ws.rs-api</artifactId>
          <version>2.0.1</version>
      </dependency>
      
    • 如果必须使用JAX-RS 1.1规范:
      把REST框架版本降到1.x(比如Jersey 1.19.4),它会自动依赖jsr311-api-1.1.1,避免版本不兼容。
  3. 排除间接引入的冲突依赖
    如果是某个第三方依赖间接引入了jsr311-api-1.1.1,可以在Maven里通过排除规则移除它:

    <dependency>
        <groupId>第三方依赖的groupId</groupId>
        <artifactId>第三方依赖的artifactId</artifactId>
        <version>对应版本号</version>
        <exclusions>
            <exclusion>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:51:41