当前位置: 首页 > 工具软件 > Bean Query > 使用案例 >

更改文件位置以及更改编译输出路径导致Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing

易俊驰
2023-12-01

情景

我之前运到过相同的报错,主要原因是因为Bean名重复的问题
Bean重复导致出现Annotation-specified bean name ‘xx’ for bean class [xxx] conflicts with existing, non-compatible bean definition of same name and class[xxx]错误
这一次有所不同
使用SpringBoot框架开发项目,由于优化目录结构的需要,更改了很多文件的位置,以及拆分微服务的过程中出现了一个异常,non-compatible bean definition of same name and class [com.xxx.ClassA],主要意思是:存在相同的实现类名称在不同的package目录下,只要明白了这个含义就很容易解决问题,该问题主要可能存在两种情况。

完整的错误提示:
Annotation-specified bean name 'classA' for bean class 
[com.xxx.ClassA] conflicts with existing, 
non-compatible bean definition of same name 
and class[com.xxx.ClassA]

原因分析

我产生问题的主要原因有两个

  1. 更改了很多文件的位置
  2. 手动修改了编译输出路径

可能移动了一些文件位置

原因:可能是原先创建了一个接口的实现类,后来在项目过程中移动了改接口实现类的位置,但是重新打包的时候,并没有进行clean一下,导致打出来的Jar(War)包里面的class存在了两个。
解决方法:一般这种情况可以尝试:maven clean一下, project clean一下。 将项目原先jar包删除,重新打包。IDEA可以直接maven clean之后 rebuild project

存在重复的实现类名称且都使用@service等注解标注

Link
原因:在项目中通过复制某个实现类的代码,忘记修改实现类中@Service注解中的方法名称,导致项目中存在两个一样的实现类注解名称,我在之前遇到过类似问题,详情请参考开头引入的文章
解决方法:找到所有实现类,打开查看是否与实现类名称保持类似, 存在一样的实现类名称进行修改, 重新运行即可

 类似资料: