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.ThreadPoolTask​​Executor:正在初始化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.ThreadPoolTask​​Executor:关闭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