昨天我正在开发的Spring Boot应用程序(1.5.2.RELEASE)上发生了一个非常奇怪的错误。我在Eclipse中运行项目时开始收到以下异常。
从命令行运行时,一切正常(但我仍然需要在开发和调试时从Eclipse运行它)。我尝试deleting the .classpath file,重新导入项目,在Eclipse中清理它们,但错误仍然存在
2017-12-05 13:46:45.620 ERROR 11048 --- [ restartedMain] o.s.b.f.s.DefaultListableBeanFactory : Destroy method on bean with name 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' threw an exception
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@744ed1b7: startup date [Tue Dec 05 13:46:43 EET 2017]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:404) [spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
<STACK-TRACE>
2017-12-05 13:46:45.635 ERROR 11048 --- [ restartedMain] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.almetis.webraadmin.WebRaAdminApplication];
nested exception is java.lang.IllegalStateException: AutoConfigure cycle detected between org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration and org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:545) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
<STACK-TRACE>
Caused by: java.lang.IllegalStateException: AutoConfigure cycle detected between org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration and org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration
at org.springframework.util.Assert.state(Assert.java:70) ~[spring-core-4.3.7.RELEASE.jar:4.3.7.RELEASE]
答案 0 :(得分:4)
升级我的主项目和库以使用Spring Boot 1.5.8.RELEASE后,我可以再次在Eclipse中运行我的应用程序。
1.5.2.RELEASE与Neo4J集成似乎存在问题(请参阅github issue和issue)。
在更好地了解之后,我看到了原因:我的主应用程序使用的是Spring Boot 1.5.2,其中一个正在使用的库是使用Spring Boot 1.5.8。
在使用我的库和主应用程序的Spring Boot版本后,我看到了:
如果所有库和主应用程序都使用Spring Boot 1.5.8,那么一切正常
如果库使用的是Spring Boot 1.5.8且主应用程序使用的是Spring Boot 1.5.2,则会抛出问题中的异常
错误有点神秘(至少可以说),但主要的好处是保持所有库和应用程序在同一个Spring Boot版本。