文档开发者中心
我的

ProGuard对类进行混淆启动应用报“Bean定义冲突异常ConflictingBeanDefinitionException”的解决

问题:Bean定义冲突异常

ProGuard对类进行混淆之后,启动应用报“Bean定义冲突异常ConflictingBeanDefinitionException”,

收起
自动换行
深色代码主题
复制

2021-12-16 14:19:38,182 [main] ERROR SpringApplication:826 - Application run failedorg.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [ com.waylau.boot.Application]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'a' for bean class [ com.waylau.core.pegging.service.impl.a] conflicts with existing, non-compatible bean definition of same name and class [ com.waylau.base.productstructure.service.impl.a]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'a' for bean class [ com.waylau.core.pegging.service.impl.a] conflicts with existing, non-compatible bean definition of same name and class [ com.waylau.base.productstructure.service.impl.a] at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:610) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.access$800(ConfigurationClassParser.java:111) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.lambda$processGroupImports$1(ConfigurationClassParser.java:812) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at java.util.ArrayList.forEach(ArrayList.java:1259) ~[?:1.8.0_262] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:809) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:780) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:193) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:237) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.10.RELEASE.jar!/:2.2.10.RELEASE] at com.waylau.boot.Application.main(Application.java:21) [classes!/:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_262] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_262] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_262] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_262] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [ty-engine-app-1.0-SNAPSHOT.jar:?] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [ty-engine-app-1.0-SNAPSHOT.jar:?] at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [ty-engine-app-1.0-SNAPSHOT.jar:?] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) [ty-engine-app-1.0-SNAPSHOT.jar:?]Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'a' for bean class [ com.waylau.core.pegging.service.impl.a] conflicts with existing, non-compatible bean definition of same name and class [ com.waylau.base.productstructure.service.impl.a] at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:349) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:287) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:296) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:600) ~[spring-context-5.2.15.RELEASE.jar!/:5.2.15.RELEASE] ... 27 more

问题原因

类被混淆,生成了相同的bean的名称了(都是“a”)。

解决方案

保持类名不被混淆

收起
自动换行
深色代码主题
复制

<!--保持类名不被混淆--><option>-keepnames class com.waylau.core.pegging.service.impl.SimulationService, com.waylau.core.supply.service.impl.SupplyDateService</option

或者在类上指定bean的唯一名称。

点赞
1
收藏
回复
2
分享
举报
浏览2057 编辑于2021-12-17 07:27未知归属地
全部评论
最多点赞
最新发布
最早发布
每次看您的文章都收获满满,已收藏!
1
1楼回复于2021-12-16 15:02 未知归属地
  • waylau
    多谢支持!!!!!!
    2021-12-16 15:51 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

目录 收起
问题:Bean定义冲突异常
问题原因
解决方案
了解社区公约,与您携手共创和谐专业的开发者社区。