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

Eureka DiscoveryClient缓存刷新报AbstractMethodError但服务正常问题咨询

错误原因

该报错属于JAX-RS(Java API for RESTful Web Services)规范版本冲突,具体逻辑如下:

  • Eureka 客户端底层默认使用 Jersey 1.x 框架发送HTTP请求,Jersey 1.x 实现的是 JAX-RS 1.x 规范,该版本下javax.ws.rs.core.Response类没有getStatusInfo()方法
  • 你的项目中存在额外引入的 JAX-RS 2.x 版本依赖(可能是直接引入,也可能是其他第三方依赖间接引入),2.x版本的Response类新增了getStatusInfo()方法
  • 类加载时优先加载了2.x版本的Response类,运行时调用getStatusInfo()方法时,Jersey 1.x 的实现类没有对应方法实现,直接抛出AbstractMethodError
  • 服务本身运行正常是因为服务注册到Eureka的逻辑不受该问题影响,仅拉取Eureka服务注册表、刷新本地缓存的逻辑失败,如果你的服务不需要调用其他注册到Eureka的服务,业务逻辑不会受到直接影响。
修复方案

你可以根据项目实际情况选择以下任意一种方案修复:

  • 方案1:排除冲突的JAX-RS 2.x依赖
    先通过依赖树命令定位引入JAX-RS 2.x的依赖:
    Maven项目执行命令:mvn dependency:tree
    Gradle项目执行命令:gradlew dependencies
    找到引入javax.ws.rs:javax.ws.rs-api 2.0+版本的依赖后,给该依赖添加排除规则,Maven排除示例如下:
    <dependency>
        <groupId>冲突依赖的groupId</groupId>
        <artifactId>冲突依赖的artifactId</artifactId>
        <version>冲突依赖版本</version>
        <exclusions>
            <exclusion>
                <groupId>javax.ws.rs</groupId>
                <artifactId>javax.ws.rs-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 方案2:强制统一JAX-RS版本为1.x
    在项目的依赖管理配置中明确指定JAX-RS使用1.x版本,保证全项目版本统一,Maven示例如下:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
                <version>1.1.1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • 方案3:替换Eureka客户端的HTTP实现(Spring Cloud项目适用)
    如果是Spring Cloud项目,可以直接替换Eureka默认的Jersey实现,从根源避免版本冲突:
    第一步:排除eureka-client默认的jersey依赖:
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-client</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jersey.contribs</groupId>
                <artifactId>jersey-apache-client4</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    第二步:在配置文件中开启HTTP客户端实现:
    eureka:
      client:
        http-client:
          enabled: true
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:02