在Spring Boot应用程序中进行一轮SOUP升级期间,我将Apache Derby从10.14.1.0升级到10.15.1.3。现在,测试由于这种美感而失败了(快照,完整的堆栈跟踪here):
Failed to load ApplicationContext
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':
Unsatisfied dependency expressed through constructor parameter 0
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataSource':
Invocation of init method failed
Caused by: java.lang.IllegalStateException:
Failed to replace DataSource with an embedded database for tests.
If you want an embedded database please put a supported one on the
classpath or tune the replace attribute of @AutoConfigureTestDatabase.
这是怎么回事?我需要更改任何配置吗?
答案 0 :(得分:1)
Apache Derby需要从10.15.x开始的Java 9,Spring Boot当前不支持Java 9。
另请参阅spring-boot#16433。
答案 1 :(得分:0)
我只想回答我在 Java 11 之上让 Derby 15.2.0 与 Spring Boot 2.4.4 一起使用嵌入模式的 derby 所花费的时间。Spring Boot 2.4.4 开箱即用Derby 14,尽管您会在 Spring Boot 开始时收到一些警告。将 apache derby 升级到 15.2.0 为我解决了这个问题。
在 pom 中,定义了 derby 和 derbytools 依赖:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.15.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.15.2.0</version>
</dependency>
然后在您的应用属性文件中:
spring.datasource.driver-class-name=org.apache.derby.iapi.jdbc.AutoloadedDriver
代替: spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
在那之后,我现在可以很好地启动 Spring Boot,没有任何警告或任何引起关注的问题。