java org.hsqldb.jdbcDriver在运行方法的junit测试时出现ClassNotFoundException异常

e0uiprwp  于 2023-03-16  发布在  Java
关注(0)|答案(6)|浏览(117)

我正在使用一个返回数据源的方法。该方法如下所示:

public static DataSource getDataSource(){
        String url;
        //url="jdbc:hsqldb:file:"+filePath;
        url = "jdbc:hsqldb:file:D:/EclipseWorskpace/ew-pg/lmexadapter/hsqldb-example/src/main/webapp/WEB-INF/data/db/hsqldb.jar";
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setUsername("SA");
        basicDataSource.setPassword("password");
        basicDataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver");
        basicDataSource.setUrl(url);
        System.out.println("$$$$$$$$ URL is : " + url);
        return basicDataSource;
    }

我从dao调用这些方法,并使用ibatis进行ORMap。当我通过junit测试运行我的测试用例时,它给了我一个异常:

" org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.hsqldb.jdbcDriver'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1259)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1192)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:884)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
    at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:213)
    ... 35 more
Caused by: java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1253)
    ... 39 more
"
lnlaulya

lnlaulya1#

通过从here下载 HSQLDB jar并添加到类路径中

idfiyjo8

idfiyjo82#

前面的答案是对的,也是错的。
需要将HSQLDB jar添加到类路径中。问题在于,在前面的回答中,提问者指向了项目的旧版本,而这些旧版本中没有他们要查找的类。未找到的类仅存在于HSQLDB版本2中,可从http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_3/获得

ktca8awb

ktca8awb3#

如果您使用的是maven,请尝试添加

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.4.0</version>
    <scope>runtime</scope>
</dependency>

到您的pom.xml

bqjvbblv

bqjvbblv4#

如果您已经下载了HSQLDBjar文件并且安装正确,那么我将检查类路径。

zz2j4svz

zz2j4svz5#

只需使用“抓取”:

@Grab('org.hsqldb:hsqldb:2.3.3')
@GrabConfig(systemClassLoader=true)

更多信息:http://groovy-lang.org/databases.html

r8uurelv

r8uurelv6#

尝试在pom.xml中执行以下依赖项配置

<dependency>
   <groupId>org.hsqldb</groupId>
   <artifactId>hsqldb</artifactId>
   <classifier>jdk8</classifier>
   <version>2.6.1</version>        
</dependency>

对于我来说,添加分类器行解决了一个问题。请参见hsqldb repo. https://sourceforge.net/p/hsqldb/bugs/1644/中的以下建议

相关问题