H2升级后

时间:2017-06-13 14:14:37

标签: spring h2

我在我的项目中对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-version 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>

1 个答案:

答案 0 :(得分:0)

尝试添加

<scope>runtime</scope>

<scope>test</scope>

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

h2依赖