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

Spring Cloud依赖与显式声明的Resilience4j包冲突,如何解决?

Spring Cloud依赖引入的Resilience4j包与显式声明版本冲突的解决方法

已尝试的无效方法

  • 添加依赖排除
  • 直接导入该库
  • 引入BOM

当前pom.xml配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
    <relativePath/>
</parent>

<properties>
    <spring-cloud.version>2022.0.1</spring-cloud.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>


<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot3</artifactId>
    <version>2.2.0</version>
</dependency>

启动报错信息

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    io.github.resilience4j.spring6.bulkhead.configure.threadpool.ThreadPoolBulkheadConfiguration.createBulkheadRegistry(ThreadPoolBulkheadConfiguration.java:105)

The following method did not exist:

    'io.github.resilience4j.bulkhead.ThreadPoolBulkheadRegistry io.github.resilience4j.bulkhead.ThreadPoolBulkheadRegistry.of(java.util.Map, io.github.resilience4j.core.registry.RegistryEventConsumer, java.util.Map)'

The calling method's class, io.github.resilience4j.spring6.bulkhead.configure.threadpool.ThreadPoolBulkheadConfiguration, was loaded from the following location:

    jar:file:/.m2/repository/io/github/resilience4j/resilience4j-spring6/2.2.0/resilience4j-spring6-2.2.0.jar!/io/github/resilience4j/spring6/bulkhead/configure/threadpool/ThreadPoolBulkheadConfiguration.class

The called method's class, io.github.resilience4j.bulkhead.ThreadPoolBulkheadRegistry, is available from the following locations:

    jar:file:/.m2/repository/io/github/resilience4j/resilience4j-bulkhead/1.7.0/resilience4j-bulkhead-1.7.0.jar!/io/github/resilience4j/bulkhead/ThreadPoolBulkheadRegistry.class
    jar:file:/.m2/repository/io/github/resilience4j/resilience4j-bulkhead/2.2.0/resilience4j-bulkhead-2.2.0.jar!/io/github/resilience4j/bulkhead/ThreadPoolBulkheadRegistry.class

The called method's class hierarchy was loaded from the following locations:

    io.github.resilience4j.bulkhead.ThreadPoolBulkheadRegistry: file:/.m2/repository/io/github/resilience4j/resilience4j-bulkhead/1.7.0/resilience4j-bulkhead-1.7.0.jar


Action:

Correct the classpath of your application so that it contains compatible versions of the classes io.github.resilience4j.spring6.bulkhead.configure.threadpool.ThreadPoolBulkheadConfiguration and io.github.resilience4j.bulkhead.ThreadPoolBulkheadRegistry

核心原因

显式引入的resilience4j-spring-boot3:2.2.0依赖2.2.0版本的resilience4j-bulkhead,但Spring Cloud 2022.0.1默认引入的是1.7.0版本的resilience4j-bulkhead,类加载时优先加载了旧版本,而旧版本中不存在新版本依赖的方法,导致启动失败。

解决方法

方法1:通过BOM统一Resilience4j版本

在dependencyManagement块中引入Resilience4j的BOM,强制所有相关依赖使用指定版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 引入Resilience4j BOM统一版本 -->
        <dependency>
            <groupId>io.github.resilience4j</groupId>
            <artifactId>resilience4j-bom</artifactId>
            <version>2.2.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

之后将resilience4j-spring-boot3依赖的版本号移除,由BOM统一管理:

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot3</artifactId>
</dependency>

方法2:排除Spring Cloud中的旧版本Resilience4j

在Spring Cloud的依赖管理配置中排除所有Resilience4j相关依赖,确保仅加载显式声明的版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
            <exclusions>
                <exclusion>
                    <groupId>io.github.resilience4j</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

方法3:使用Spring Cloud兼容的Resilience4j版本

替换显式声明的版本为Spring Cloud 2022.0.1兼容的1.7.x版本:

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot3</artifactId>
    <version>1.7.2</version>
</dependency>

验证方式

执行mvn dependency:tree命令,检查所有Resilience4j相关依赖的版本是否统一,确认无1.7.0和2.2.0版本共存的情况。


内容的提问来源于stack exchange,提问作者Janani Sampath Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:05:04