如何解决resilience4j-Spring Boot应用程序运行失败
pom.xml ============
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.telstra.resilience</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Resilience4j</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-circuitbreaker</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-all</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-reactor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
主班 ==================
package com.telstra.resilience.demo;
import java.net.URI;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
import static org.springframework.web.reactive.function.server.ServerResponse.permanentRedirect;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
@Bean
RouterFunction<ServerResponse> redirectRoot() {
return route(GET("/"),req -> permanentRedirect(URI.create("/actuator")).build());
}
}
我有三个服务类和三个控制器。构建成功,但应用程序运行失败,出现以下错误:
2020-10-18 21:13:15.926信息47072 --- [main] c.t.resilience.demo.DemoApplication:未设置活动配置文件,回退到默认配置文件:默认 2020-10-18 21:13:16.481 WARN 47072 --- [main] o.s.boot.actuate.endpoint.EndpointId:端点ID'stream-circuitbreaker-events'包含无效字符,请迁移为有效格式。 2020-10-18 21:13:16.482 WARN 47072 --- [main] o.s.boot.actuate.endpoint.EndpointId:端点ID'hystrix-stream-circuitbreaker-events'包含无效字符,请迁移为有效格式。 2020-10-18 21:13:16.675信息47072 --- [main] .s.d.r.c.RepositoryConfigurationDelegate:以DEFERRED模式引导Spring Data JPA存储库。 2020-10-18 21:13:16.696 INFO 47072 --- [main] .s.d.r.c.RepositoryConfigurationDelegate:完成Spring数据存储库的扫描时间为13ms。找到0个JPA存储库接口。 2020-10-18 21:13:16.901信息47072 --- [main] o.s.cloud.context.scope.GenericScope:BeanFactory id = 1e499821-9d88-3e1e-b828-98e81518634b 2020-10-18 21:13:17.414信息47072 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor:正在初始化ExecutorService'applicationTaskExecutor' 2020-10-18 21:13:17.437信息47072 --- [main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-正在启动... 2020-10-18 21:13:17.520信息47072 --- [main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-开始完成。 2020-10-18 21:13:17.660信息47072-[[task-1] o.hibernate.jpa.internal.util.LogHelper:HHH000204:处理PersistenceUnitInfo [名称:默认] 2020-10-18 21:13:17.720信息47072 --- [task-1] org.hibernate.Version:HHH000412:Hibernate ORM核心版本5.4.21 2020-10-18 21:13:17.905信息47072 --- [task-1] o.hibernate.annotations.common.Version:HCANN000001:Hibernate Commons注释{5.1.0.Final} 2020-10-18 21:13:18.071信息47072-[[task-1] org.hibernate.dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.H2Dialect 2020-10-18 21:13:18.367 INFO 47072 --- [task-1] o.h.e.t.j.p.i.JtaPlatformInitiator:HHH000490:使用JtaPlatform实现:[org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2020-10-18 21:13:18.378信息47072-[[task-1] j.LocalContainerEntityManagerFactoryBean:为持久性单元'default'初始化的JPA EntityManagerFactory 2020-10-18 21:13:20.160 INFO 47072 --- [main] o.s.b.a.e.web.EndpointLinksResolver:在基本路径“ / actuator”下暴露2个端点 2020-10-18 21:13:20.569 WARN 47072 --- [main] onfigReactiveWebServerApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名称为“ org.springframework”的bean时出错。 cloud.circuitbreaker.resilience4j.ReactiveResilience4JAutoConfiguration $ MicrometerReactiveResilience4JCustomizerConfiguration':初始化方法调用失败;嵌套的异常是java.lang.NoSuchFieldError:entryMap 2020-10-18 21:13:20.580 INFO 47072 --- [main] j.LocalContainerEntityManagerFactoryBean:为持久性单元“默认”关闭JPA EntityManagerFactory 2020-10-18 21:13:20.580 INFO 47072 --- [main] .SchemaDropperImpl $ DelayedDropActionImpl:HHH000477:作为SessionFactory关闭的一部分启动模式的延迟evictData 2020-10-18 21:13:20.582信息47072 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor:关闭ExecutorService'applicationTaskExecutor' 2020-10-18 21:13:20.582 INFO 47072 --- [main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-已启动关机... 2020-10-18 21:13:20.584信息47072 --- [main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-关闭已完成。 2020-10-18 21:13:20.608 INFO 47072 --- [[main] ConditionEvaluationReportLoggingListener:
启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行您的应用程序。 2020-10-18 21:13:20.618错误47072 --- [main] o.s.boot.SpringApplication:应用程序运行失败
org.springframework.beans.factory.BeanCreationException:创建名称为“ org.springframework.cloud.cloud.circuitbreaker.resilience4j.ReactiveResilience4JAutoConfiguration $ MicrometerReactiveResilience4JCustomizerConfiguration”的bean时出错:调用init方法失败;嵌套的异常是java.lang.NoSuchFieldError:entryMap 在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:415)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:324)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)〜[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)〜[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:62)〜[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:315)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)上[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE] 在com.telstra.resilience.demo.DemoApplication.main(DemoApplication.java:19)[classes /:na] 造成原因:java.lang.NoSuchFieldError:entryMap 在io.github.resilience4j.circuitbreaker.internal.InMemoryCircuitBreakerRegistry.getAllCircuitBreakers(InMemoryCircuitBreakerRegistry.java:127)〜[resilience4j-circuitbreaker-1.3.1.jar:1.3.1] 在io.github.resilience4j.micrometer.tagged.TaggedCircuitBreakerMetrics.bindTo(TaggedCircuitBreakerMetrics.java:65)〜[resilience4j-micrometer-1.3.1.jar:1.3.1] 在org.springframework.cloud.circuitbreaker.resilience4j.ReactiveResilience4JAutoConfiguration $ MicrometerReactiveResilience4JCustomizerConfiguration.init(ReactiveResilience4JAutoConfiguration.java:77)〜[spring-cloud-circuitbreaker-resilience4j-1.0.4.RELEASE.jar:1.0.4.RELEASE] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:1.8.0_261] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_261] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_261] 在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_261] 在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] 在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)〜[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] ...省略了19个常见框架
如果有人看到过类似的问题,请提供帮助!
解决方法
从spring cloud依赖中排除resilience4j
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。