spring-cloud-alibaba icon indicating copy to clipboard operation
spring-cloud-alibaba copied to clipboard

spring-boot-starter-ahas-sentinel-client与Seata冲突

Open zwwjava opened this issue 4 years ago • 1 comments

异常

springBoot架构下以下两个包冲突。

com.alibaba.csp spring-boot-starter-ahas-sentinel-client 1.9.7

com.alibaba.cloud spring-cloud-starter-alibaba-seata 2.2.5.RELEASE

发生原因

项目中计划使用【阿里云】的【应用高可用服务】的限流工具,需要引入依赖包

com.alibaba.csp spring-boot-starter-ahas-sentinel-client 1.9.7

,但启动的时候发生异常。如下原因

触发了自动装配条件。 @bean @scope("prototype") @ConditionalOnClass( name = {"com.alibaba.csp.sentinel.SphU"} ) @ConditionalOnProperty( name = {"feign.sentinel.enabled"}, havingValue = "true" ) Builder feignSentinelBuilder(BeanFactory beanFactory){}

SeataSentinelFeignBuilder.builder(beanFactory); 方法中会调用 com.alibaba.cloud.sentinel.feign.SentinelFeign.builder() 但是我没有引用 sentinel 包,引用的是 ahas-sentinel 包。

异常提示如下

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'feignSentinelBuilder' defined in class path resource [com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [feign.Feign$Builder]: Factory method 'feignSentinelBuilder' threw exception; nested exception is java.lang.NoClassDefFoundError: com/alibaba/cloud/sentinel/feign/SentinelFeign at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:637) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:342) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:227) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1175) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:426) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1127) at org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:148) at com.alibaba.cloud.seata.feign.SeataFeignContext.getInstance(SeataFeignContext.java:43) at org.springframework.cloud.openfeign.FeignClientFactoryBean.get(FeignClientFactoryBean.java:301) at org.springframework.cloud.openfeign.FeignClientFactoryBean.feign(FeignClientFactoryBean.java:110) at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:359) at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:347) at org.springframework.cloud.openfeign.FeignClientsRegistrar.lambda$registerFeignClient$0(FeignClientsRegistrar.java:240) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1230) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1172) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:886) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:790) ... 24 common frames omitted Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [feign.Feign$Builder]: Factory method 'feignSentinelBuilder' threw exception; nested exception is java.lang.NoClassDefFoundError: com/alibaba/cloud/sentinel/feign/SentinelFeign at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:652) ... 57 common frames omitted Caused by: java.lang.NoClassDefFoundError: com/alibaba/cloud/sentinel/feign/SentinelFeign at com.alibaba.cloud.seata.feign.SeataSentinelFeignBuilder.builder(SeataSentinelFeignBuilder.java:34) at com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration.feignSentinelBuilder(SeataFeignClientAutoConfiguration.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 58 common frames omitted Caused by: java.lang.ClassNotFoundException: com.alibaba.cloud.sentinel.feign.SentinelFeign at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 65 common frames omitted

Describe what you expected to happen

Builder feignSentinelBuilder(BeanFactory beanFactory){} 能不能增加一个装配条件。或者其他方式解决这个冲突。

zwwjava avatar Nov 03 '21 11:11 zwwjava

你这个问题解决了吗?我也碰到了类似的问题,正在寻求解决方案

liyf155 avatar Nov 19 '21 07:11 liyf155

This issue has been open 30 days with no activity. This will be closed in 7 days.

github-actions[bot] avatar Feb 29 '24 18:02 github-actions[bot]