升级到Apache Derby 10.15后,Spring Boot应用程序中断-为什么?

时间:2019-04-12 11:49:38

标签: spring-boot derby

在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.

这是怎么回事?我需要更改任何配置吗?

2 个答案:

答案 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,没有任何警告或任何引起关注的问题。