首页 > 解决方案 > Spring IllegalState 无法在单元测试中创建数据源不稳定行为

问题描述

几天前,在运行测试时,我的服务器一直有不稳定的行为。当测试开始时——没有任何明显的原因。我得到:

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourceServerConfig': Injection of autowired dependencies failed; 
...Or error creating datasource.

我从这里得到的是无法正确读取属性文件。我已强制应用程序读取属性文件,但仍然出现相同类型的错误。

自出现错误(Firebase admin SDK)以来,我删除了所有添加的依赖项,并删除了所有可能相关的配置。但是仍然得到完全出乎意料的结果,有时服务器运行没有问题,有时它只是失败并失败,唯一似乎定期恢复工作的想法是清理依赖项(mvn clean install -U)。

我在 Intellij Idea 2018.1.5 上运行服务器。

任何关于正在发生的事情的暗示将不胜感激。

标签: javaspringmavenintellij-ideastartup

解决方案


如果 mvn clean 和 -U 有效,我怀疑由于某种原因,您的 Maven 依赖项设置带来了多个工件,一个带有发布版本,另一个带有 SNAPSHOT 版本,并且两个工件都存在于同一个目标目录中(例如,/target /WEB-INF/lib 如果你的是在 Tomcat 中运行的 webapp)。

还有一种可能是您的本地 maven 存储库($YOUR_USER_NAME/.m2/repository/~ 如果您是 Mac),有旧的 SNAPSHOT,里面有错误,或者不是您要使用的错误,并且它会不断更新最新的当您使用带有 -U 的运行 mvn 但当您在没有 -U 的情况下运行 mvn 时,mvn 会返回错误的 SNAPSHOT。

或者

包含单元测试的 mvn 模块可能具有与预期不同的工件版本,这取决于您的 maven 模块的组织方式。

首先尝试删除本地 maven 存储库(如果您知道它是什么,则删除 .m2/reposityr/ 或特定 repo 目录下的所有内容)并执行 mvn clean build。


推荐阅读