项目启动报错以下情况:
ava.lang.NoSuchMethodException java.lang.NoSuchMethodError java.lang.NoSuchElementException NoSuchBeanDefinitionException
通用的解决思路
1、有这个类,有这个方法,但是没有交给spring进行管理。 这种情况最常见,一般都是类没有交给Spring IOC进行管理或者调用的时候没有注入。
2、有这个类,而且有好几个,他们之间发生了冲突。 如果这个类指向的是maven第三方依赖,大概率是因为maven包冲突了。
例如问题:
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.aliexpress.fileserver.tool.security.SecurityTool' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1631)
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)
No qualifying bean of type ‘com.aliexpress.fileserver.tool.security.SecurityTool’ available: 指向的是com.aliexpress.fileserver包下的依赖。本地并没有SecurityTool,只有依赖的包里面存在。
解决思路: 找到冲突的包给exclude掉。 由于可能依赖了第三方的maven包,排查起来比较困难,可以使用插件Maven Helper idea 安装使用即可。 找到对应的包排出掉就好了 移除某一个
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>lazada-item-health-center-ns-client</artifactId>
<version>1.0.1</version>
<exclusions>
<exclusion>
<artifactId>cglib-nodep</artifactId>
<groupId>cglib</groupId>
</exclusion>
</exclusions>
</dependency>
移除全部写法:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>lazada-item-health-center-ns-client</artifactId>
<version>1.0.1</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
|