2011-02-21 113 views
8

我正在使用一種返回數據源的方法。方法如下:org.hsqldb.jdbcDriver運行方法的junit測試時發生ClassNotFoundException

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調用這些方法。和所有這一切,我用我的OR映射ibatis。當我通過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 
" 
+0

刪除無用的堆棧跟蹤 –

+1

@Jigar:我寧願看到他們發佈過多的堆棧跟蹤,而不是太少。 –

回答

10

通過下載和here

+0

我不能將jar添加到我的classpath中,除此之外,如果您有其他解決此問題的建議 – Chitresh

+0

爲什麼??,*沒有其他解決方案存在* –

+0

@Chitresh:因爲這是唯一正確的解決方案,所以您運氣不好。 –

1

加入HSQLDB罐子在類路徑如果你已經下載了HSQLDB jar文件,正確安裝,然後我會檢查類路徑。

+0

如果不必將其添加到類路徑中,那我該怎麼做。我有一個解決方案來在我的Tomcat庫中添加一個jar,但它也給我一個例外。你有任何想法如何reslove這個 – Chitresh

+0

最有可能你應該添加到您的構建路徑。我假設您使用的是Eclipse,然後右鍵單擊到您的項目中,單擊屬性,然後將其添加到您的構建路徑。你把你的jar文件放在哪裏?如何?您可以將文件拖放到項目的lib目錄中。 – Luixv

4

此處的答案是正確的,也是錯誤的。

HSQLDB jar需要添加到類路徑中。問題是在之前的答案中,提問者被指向沒有他們正在尋找的課程的舊版本項目。沒有找到的類只在HSQLDB的版本2中,可從http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_3/

+0

謝謝,你很幸運,你昨天把這個答案! –

相關問題