解决项目启动报错--maven依赖冲突

这个问题之前出现过一次,和同事讨论了2天,解决了。后来合 了一下master的分支,问题又出现了,但是忘记了解决方法。现在记录一下免得时间长了又忘记了

问题描述:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'buyerSubjectCollector': Unsatisfied dependency expressed through field 'subjectValueCollects'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'subjectValueCollects' defined in class path resource [bbq-common.xml]: Cannot resolve reference to bean 'identifyBuyerSubjectQuery' while setting bean property 'objectSubjectQueryList' with key [0]; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'identifyBuyerSubjectQuery': Unsatisfied dependency expressed through field 'uicReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicExtraReadServiceClient' while setting bean property 'uicExtraReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicExtraReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicCacheService' while setting bean property 'uicCacheService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:123)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:666)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:353)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:300)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1082)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1071)
    at com.wdk.commercial.Application.main(Application.java:32)
    ... 6 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'subjectValueCollects' defined in class path resource [bbq-common.xml]: Cannot resolve reference to bean 'identifyBuyerSubjectQuery' while setting bean property 'objectSubjectQueryList' with key [0]; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'identifyBuyerSubjectQuery': Unsatisfied dependency expressed through field 'uicReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicExtraReadServiceClient' while setting bean property 'uicExtraReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicExtraReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicCacheService' while setting bean property 'uicCacheService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583)
    ... 25 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'identifyBuyerSubjectQuery': Unsatisfied dependency expressed through field 'uicReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicExtraReadServiceClient' while setting bean property 'uicExtraReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicExtraReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicCacheService' while setting bean property 'uicCacheService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    ... 40 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicExtraReadServiceClient' while setting bean property 'uicExtraReadServiceClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicExtraReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicCacheService' while setting bean property 'uicCacheService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583)
    ... 50 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicExtraReadServiceClient' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Cannot resolve reference to bean 'uicCacheService' while setting bean property 'uicCacheService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    ... 63 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uicCacheService' defined in file [/Users/bitidawang/Downloads/software/workspace/wdk-commercial/wdk-commercial-core-start/target/classes/spring/spring-wdk-commercial-uic.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    ... 73 more
Stopping available components
Caused by: java.lang.RuntimeException: UICCacheService-initTair error , unit:null forceNodeGroup: null
    at com.taobao.uic.common.cache.TairCacheFactory.initTair(TairCacheFactory.java:68)
    at com.taobao.uic.common.cache.TairCacheFactory.getInstance(TairCacheFactory.java:42)
    at com.taobao.uic.common.cache.DefaultUICCacheService.initTair(DefaultUICCacheService.java:214)
    at com.taobao.uic.common.cache.DefaultUICCacheService.init(DefaultUICCacheService.java:163)
    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.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1759)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1696)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
    ... 80 more
Caused by: java.lang.RuntimeException: init uicCacheManager failed  isNewVersion :true
    at com.taobao.uic.common.cache.uictair.MultiClusterTairProxyImpl.init(MultiClusterTairProxyImpl.java:107)
    at com.taobao.uic.common.cache.TairCacheFactory.initTair(TairCacheFactory.java:61)
    ... 90 more
Caused by: java.lang.RuntimeException: com.taobao.tair.impl.mc.ShieldTairManager was loaded by com.taobao.pandora.boot.loader.ReLaunchURLClassLoader@6da9dc6, it should be loaded by Pandora Container. Can not load this fake sdk class. please refer to xxxx(这里是文档地址,公司保密协议不好透露) for the solution.
    at com.taobao.tair.impl.mc.ShieldTairManager.<init>(ShieldTairManager.java)
    at com.taobao.uic.common.cache.tair.ShieldTairCacheManager.init(ShieldTairCacheManager.java:32)
    at com.taobao.uic.common.cache.uictair.MultiClusterTairProxyImpl.init(MultiClusterTairProxyImpl.java:103)
    ... 91 more

解决办法先放在前面:

快捷键搜索com.taobao.tair.impl.mc.ShieldTairManager,仔细看,出现在两个包里,按照自己的业务,在所有子模块中根据maven help插件搜索,排除掉其中一个。

解决路程:

  看到报错一大堆,前面的基本都不用管,看最后报错比较简短的那一句。

com.taobao.tair.impl.mc.ShieldTairManager was loaded by com.taobao.pandora.boot.loader.ReLaunchURLClassLoader@6da9dc6, it should be loaded by Pandora Container. Can not load this fake sdk class. please refer to xxxx(这里是文档地址,公司保密协议不好透露) for the solution

意思是说ShieldTairManager 这个类是Pandora Container容器加载的,请参考某某文档解决,
复制下来文档链接在浏览器打开,发现没有权限,阿里的权限控制是做的比较严格的,到处都限制,好吧,那就不看文档了。
按照需要Pandora Container容器加载的思路,脑海里出现各种假设,难道这个类被别的人修改过了?难道本地启动不起来了吗?难道我本地启动的不是Pandora Container容器吗?
思路错了就会把你带到无尽的深渊当中。
无意当中拷贝了com.taobao.tair.impl.mc.ShieldTairManager,快捷键在项目中搜索,发现这个类出现在两个jar包中,
按照之前本地debug段点调试,发现一个奇怪的现象,


  什么?构造器中构造一个对象时你直接给我抛出一个异常??抛出的异常和项目启动时候抛出的异常是一样的,com.taobao.tair.impl.mc.ShieldTairManager was loaded by..........

  看看ShieldTairManager出现在哪个jar包中,发现出现在一个A包中和一个B包中,B包是自己的外部依赖C引进来的,是需要的,那就把A包从项目中排除吧,

  好吧,搜索各个子模块,去掉A包,项目本地启动,完美解决。 

 小经验总结:

  1.看异常看最后一个报错,最后一个一般才是错误的主要原因。注意是一般。

  2.思路错了会带你到无尽的深渊,一条路走不通试试另一条路。

  3.一个类出现在两个jar包中,会出现奇怪的问题,必须排除掉其中一个或者改变依赖顺序。

  4.要坚韧,要有耐心。






原文地址:https://www.cnblogs.com/jiliunyongjin/p/14019460.html