【问题标题】:After H2-UpgradeH2-升级后
【发布时间】:2017-06-13 14:14:37
【问题描述】:

我在我的项目中升级了 h2-database,但现在它失败了,出现以下异常:

Caused by: org.springframework.beans.PropertyBatchUpdateException: Failed properties: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [org.h2.Driver]
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121) ~[spring-beans-4.2.8.RELEASE.jar:4.2.8.RELEASE]
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75) ~[spring-beans-4.2.8.RELEASE.jar:4.2.8.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1518) ~[spring-beans-4.2.8.RELEASE.jar:4.2.8.RELEASE]
    ... 66 common frames omitted

这是我的 spring-context.xml:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver}" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
    </bean>

这里是我的 jdbc.properties,spring-context 加载数据以初始化我的数据源:

db.driver=org.h2.Driver
db.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
db.username=sa
db.password=

db.memurl=jdbc:h2:mem:test

在 h2 版本 1.4.179 上一切正常,但在 1.4.196 上失败。使用的 Spring 版本是 4.2.8。

我不明白为什么它会失败...H2 发生了一些变化,但我不知道是什么...有人知道吗?

--更新--

这里是 pom.xml 的所有依赖项(spring-version 是 4.2.8),这是我所有测试依赖项的通用项目(包装是 pom),它被多个项目使用。我使用 h2-database 作为内存数据库仅用于测试:

<dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.11</version>
            <exclusions>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.196</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.10.19</version>
        </dependency>
    </dependencies>
    <packaging>pom</packaging>

【问题讨论】:

  • 您能否发布您的pom.xml 或 gradle build 以显示您如何添加依赖项?
  • 我将 pom.xml 添加到初始帖子中。

标签: spring h2


【解决方案1】:

尝试添加

<scope>runtime</scope>

<scope>test</scope>

如果您打算仅使用 h2 进行测试

h2 依赖

【讨论】:

  • 它找不到依赖关系,因为编译时存在依赖关系(我猜你没有编译错误)。运行时意味着在运行时保持对应用程序 jar 的依赖。
  • 是的,我没有任何编译错误,但我也使用 JPA,所以我不关心使用的数据库。但是为什么随着版本升级行为发生了变化?!因为如果我降级了,一切都会重新工作......它是可复制的。
猜你喜欢
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2019-03-20
  • 1970-01-01
  • 2020-09-13
相关资源
最近更新 更多