gpt4 book ai didi

java - 找不到合适的驱动程序的原因

转载 作者:IT老高 更新时间:2023-10-28 13:50:22 25 4
gpt4 key购买 nike

我正在尝试对我创建的 DAO 进行单元测试 (JUnit)。我使用 Spring 作为我的框架,我的 DAO (JdbcPackageDAO) 扩展了 SimpleJdbcDaoSupport。测试类 (JdbcPackageDAOTest) 扩展了 AbstractTransactionalDataSourceSpringContextTests。我已经按如下方式覆盖了 configLocations:

protected String[] getConfigLocations(){
return new String[] {"classpath:company/dc/test-context.xml"};
}

我的 test-context.xml 文件定义如下:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="dataPackageDao" class="company.data.dao.JdbcPackageDAO">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost"/>
<property name="username" value="sa" />
<property name="password" value="" />
</bean>

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>company/data/dao/jdbc.properties</value>
</list>
</property>
</bean>

<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>

我使用 HSQL 作为我的后端,它以独立模式运行。我选择的 IDE 是 eclipse。当我将类(class)作为 JUnit 测试运行时,这是我的错误(如下)。我不知道为什么会这样。根据 Eclipse,hsql.jar 在我的构建路径上。

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: No suitable driver found for jdbc:hsqldb:hsql://localhost    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:219)    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)    at org.springframework.test.AbstractTransactionalSpringContextTests.startNewTransaction(AbstractTransactionalSpringContextTests.java:387)    at org.springframework.test.AbstractTransactionalSpringContextTests.onSetUp(AbstractTransactionalSpringContextTests.java:217)    at org.springframework.test.AbstractSingleSpringContextTests.setUp(AbstractSingleSpringContextTests.java:101)    at junit.framework.TestCase.runBare(TestCase.java:128)    at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)    at junit.framework.TestResult$1.protect(TestResult.java:106)    at junit.framework.TestResult.runProtected(TestResult.java:124)    at junit.framework.TestResult.run(TestResult.java:109)    at junit.framework.TestCase.run(TestCase.java:120)    at junit.framework.TestSuite.runTest(TestSuite.java:230)    at junit.framework.TestSuite.run(TestSuite.java:225)    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)Caused by: java.sql.SQLException: No suitable driver found for jdbc:hsqldb:hsql://localhost    at java.sql.DriverManager.getConnection(Unknown Source)    at java.sql.DriverManager.getConnection(Unknown Source)    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277)    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:259)    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:241)    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:182)    ... 18 more

最佳答案

为了让 HSQLDB 自己注册,你需要访问它的 jdbcDriver 类。您可以使用与 example 中相同的方式执行此操作。 .

Class.forName("org.hsqldb.jdbcDriver");

触发jdbcDriver类的静态初始化,即:

static {
try {
DriverManager.registerDriver(new jdbcDriver());
} catch (Exception e) {}
}

关于java - 找不到合适的驱动程序的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com