无法转换为 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker 类
Posted
技术标签:
【中文标题】无法转换为 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker 类【英文标题】:Cannot be cast to class org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker 【发布时间】:2021-06-01 02:39:05 【问题描述】:我使用的是带有 Gradle 的 Spring Boot 2.4。
这是我定义依赖项的方式:
compile 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j'
它工作正常,但是当我添加时:
implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
我收到此错误:
java.lang.ClassCastException: class org.springframework.cloud.sleuth.instrument.circuitbreaker.TraceCircuitBreaker cannot be cast to class org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker (org.springframework.cloud.sleuth.instrument.circuitbreaker.TraceCircuitBreaker and org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker are in unnamed module of loader 'app')
at org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreakerFactory$$EnhancerBySpringCGLIB$$a7735aed.create(<generated>) ~[spring-cloud-circuitbreaker-resilience4j-2.0.0.jar:2.0.0]
有人知道出了什么问题吗?
【问题讨论】:
【参考方案1】:我最近遇到了同样的问题。这是我解决问题的方法:
我使用 Resilience4JCircuitBreakerFactory 来创建 CircuitBreaker。
@Autowired
private Resilience4JCircuitBreakerFactory circuitBreakerFactory;
...
CircuitBreaker checkStockWithCircutBreaker = circuitBreakerFactory.create("inventory");
一旦我添加了 spring-cloud-starter-sleuth 依赖项,这将不起作用。使用抽象类 CircuitBreakerFactory 以便 Spring 自动注入适当的可用 CircuitBreakerFactory 实例
@Autowired
private CircuitBreakerFactory circuitBreakerFactory;
...
CircuitBreaker checkStockWithCircutBreaker = circuitBreakerFactory.create("inventory");
【讨论】:
【参考方案2】:如 Spring Cloud Sleuth 文档中所述,您必须禁用 sleuth 断路器。只需在 application.properties 中添加以下属性即可解决:spring.seuth.circuitbreaker.enabled=false
文档链接如下:Spring Cloud Sleuth documentation
【讨论】:
以上是关于无法转换为 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker 类的主要内容,如果未能解决你的问题,请参考以下文章
无法转换为 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker 类
ClassCastException: org.springframework.orm.jpa.EntityManagerHolder 不能转换为 org.springframework.orm.hi
SpringMVC分页查询无法直接将对象转换成json的解决办法(报org.springframework.http.converter.HttpMessageNotWritableException
Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder 不能转换为 org.springframework.o
Avro 类不能转换为 org.springframework.messaging.Message 类
org.springframework.web.filter.CharacterEncodingFilter 不能转换为 javax.servlet.Filter