【问题标题】:Cloud SDK version upgrade from 3.36.0 to 3.42.0 failedCloud SDK 版本从 3.36.0 升级到 3.42.0 失败
【发布时间】:2021-05-06 03:48:36
【问题描述】:

我正在尝试将版本 cloud 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

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

【问题讨论】:

    标签: sap-cloud-sdk


    【解决方案1】:
    java.lang.ClassNotFoundException: io.github.resilience4j.core.IntervalBiFunction
    

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

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

    【讨论】:

    • 感谢您的回复。我发现 SAP Cloud SDK 版本 3.42.0 的弹性 jar 版本将为 1.7.0。我以前使用的是 1.6.1。这解决了我的问题。
    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 2018-07-26
    • 2018-01-19
    • 2018-04-07
    相关资源
    最近更新 更多