Cloud SDK 版本从 3.36.0 升级到 3.42.0 失败

问题描述

我试图将版本云 sdk jar 从 3.36.0 升级到 3.42.0。构建成功。但是,在应用程序启动期间,我收到以下错误

16:51:52.752 [main] ERROR org.springframework.boot.SpringApplication [{}] - Application run Failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configureRetry' defined in class path resource [com/sap/requisitioning/config/ResilienceConfig.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.github.resilience4j.retry.Retry]: Factory method 'configureRetry' threw exception; nested exception is java.lang.NoClassDefFoundError: io/github/resilience4j/core/IntervalBiFunction
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.instantiateUsingFactoryMethod(AbstractAutowireCapablebeanfactory.java:1334) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBeanInstance(AbstractAutowireCapablebeanfactory.java:1177) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:564) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:524) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.Abstractbeanfactory.lambda$doGetBean$0(Abstractbeanfactory.java:335) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:333) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:208) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.DefaultListablebeanfactory.preInstantiateSingletons(DefaultListablebeanfactory.java:944) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.5.jar:5.3.5]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.5.jar:5.3.5]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:769) ~[spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) [spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) [spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1313) [spring-boot-2.4.4.jar:2.4.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) [spring-boot-2.4.4.jar:2.4.4]
    at com.sap.requisitioning.RequisitionApplication.main(RequisitionApplication.java:15) [classes/:?]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.github.resilience4j.retry.Retry]: Factory method 'configureRetry' threw exception; nested exception is java.lang.NoClassDefFoundError: io/github/resilience4j/core/IntervalBiFunction
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.5.jar:5.3.5]
    ... 20 more
Caused by: java.lang.NoClassDefFoundError: io/github/resilience4j/core/IntervalBiFunction
    at io.github.resilience4j.retry.RetryConfig.<clinit>(RetryConfig.java:40) ~[resilience4j-retry-1.7.0.jar:1.7.0]
    at com.sap.requisitioning.config.ResilienceConfig.configureRetry(ResilienceConfig.java:54) ~[classes/:?]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93.cglib$configureRetry$0(<generated>) ~[classes/:?]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93$$FastClassBySpringcglib$$a8f1b6a5.invoke(<generated>) ~[classes/:?]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.5.jar:5.3.5]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.5.jar:5.3.5]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93.configureRetry(<generated>) ~[classes/:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.5.jar:5.3.5]
    ... 20 more
Caused by: java.lang.classNotFoundException: io.github.resilience4j.core.IntervalBiFunction
    at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[?:?]
    at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
    at java.lang.classLoader.loadClass(ClassLoader.java:522) ~[?:?]
    at io.github.resilience4j.retry.RetryConfig.<clinit>(RetryConfig.java:40) ~[resilience4j-retry-1.7.0.jar:1.7.0]
    at com.sap.requisitioning.config.ResilienceConfig.configureRetry(ResilienceConfig.java:54) ~[classes/:?]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93.cglib$configureRetry$0(<generated>) ~[classes/:?]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93$$FastClassBySpringcglib$$a8f1b6a5.invoke(<generated>) ~[classes/:?]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.5.jar:5.3.5]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.5.jar:5.3.5]
    at com.sap.requisitioning.config.ResilienceConfig$$EnhancerBySpringcglib$$c3bd3c93.configureRetry(<generated>) ~[classes/:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.5.jar:5.3.5]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.5.jar:5.3.5]
    ... 20 more

看起来像是弹性罐中的“重试”类。请告诉我解决方案。

解决方法

java.lang.ClassNotFoundException: io.github.resilience4j.core.IntervalBiFunction

您的 pom.xml 的依赖项设置似乎存在版本冲突。请运行 mvn dependency:tree 并进行调查。确保 resilience4j-core 只引用了一个版本。使用 <exclusions> 避免使用旧的可传递版本或使用 <dependencyManagement> / <dependency> 强制执行特定版本的 Resilience4j

请在 SAP Cloud SDK 文档中找到此 guide on dealing with dependency conflicts

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...