即使在删除类之后,仍存在ConflictingBeanDefinitionException

时间:2016-05-21 14:02:46

标签: java spring maven

我正在开发一个简单的maven + spring应用程序,我收到以下错误。它说我的两个班级有冲突。所以我删除了第二堂课,但我仍然得到同样的错误。我尝试重新启动服务器,但它仍然说我的类存在。有人可以帮忙吗?

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.nibm.config.RootConfig]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'employeeController' for bean class [com.nibm.hibernate.controller.EmployeeController] conflicts with existing, non-compatible bean definition of same name and class [com.nibm.controller.EmployeeController]

3 个答案:

答案 0 :(得分:0)

< p>您获得了例外,因为您有< strong>两个< / strong> < strong>相同< / strong>的春豆。类< / p为H. < p>抛出此异常     org.springframework.context.annotation.ClassPathBeanDefinitionScanner#相适应< / p为H. < p>看一下这个实现,看起来好像你在RootConfig中创建了一个EmployeeController类型的bean,另外还有ComponentScan。< / p> < p>要解决此问题,请从RootConfig中删除bean或更改ComponentScan,因此找不到此bean。< / p> < p>您可以在EmployeeController的构造函数中设置断点。从堆栈中,您可以获得有关如何以及为何创建bean的更多信息。< / p>

答案 1 :(得分:0)

我遇到了同样的问题,这是因为具有相同名称的类存在于Exception本身中提到的两个位置,这是相互冲突的,并且在删除了一个问题后得到了解决。

答案 2 :(得分:0)

当我从Intellij内部使用@RunWith(SpringRunner.class)/ @SpringBootTest运行JUnit测试时,我遇到了同样的ConflictingBeanDefinitionException ...“与同名同类的现有不兼容bean定义冲突”。

通过gradle执行:构建相同的测试运行正常。

这是在我重构了几个@Components的包装之后开始发生的,这使我相信某些东西在其先前的包装名称下持有对该类的引用。

似乎没有大量的gradle构建/清除操作。

在IntelliJ中执行构建->重建项目为我解决了这个问题。