2011-02-21 12 views
8

Używam jednej metody, która zwraca mi źródło danych. Metoda jest następująca:org.hsqldb.jdbcDriver ClassNotFoundException podczas wykonywania testu junit dla metody

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; 
    } 

I nazywam tę metodę od dao. i przy tym wszystkim używam ibatis do mapowania OR. Kiedy uruchomić mój przypadek testowy za pomocą testu junit to daje mi wyjątek:

" 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

usunięty niepotrzebny stacktrace –

+1

@Jigar: Wolę widzieć, że przesyłają za dużo stosu niż za mało. –

Odpowiedz

10

pobierając i dodając HSQLDB słoik w ścieżce klasy z here

+0

Nie mogę dodać słoika w mojej ścieżce klas oprócz tego, jeśli masz inną propozycję rozwiązania tego – Chitresh

+0

dlaczego ?, * nie ma innego rozwiązania * –

+0

@Chitresh: ponieważ to jedyne poprawne rozwiązanie, masz pecha. –

1

Jeśli już pobrać plik jar HSQLDB i poprawnie zainstalowany, wtedy sprawdziłbym ścieżkę klasy.

+0

, jeśli musisz zrobić to bez dodawania go do ścieżki klasy, to jak mogę to zrobić. Mam jedno rozwiązanie, aby dodać słoik w mojej tomcat lib, ale daje mi to samo wyjątek. masz pojęcie o tym, jak rozwiązać ten problem? – Chitresh

+0

Najprawdopodobniej powinieneś dodać do swojej ścieżki budowania. Zakładam, że korzystasz z Eclipse, a następnie kliknij prawym przyciskiem myszy na projekcie, kliknij właściwości, a następnie dodaj go do swojej ścieżki budowania. Gdzie umieściłeś swój plik jar? i jak? Możesz przeciągnąć i upuścić plik do katalogu lib twojego projektu. – Luixv

4

Poprzednie odpowiedzi były słuszne i błędne.

Słoik HSQLDB musi zostać dodany do ścieżki klasy. Problem polega na tym, że w poprzednich odpowiedziach pytający wskazywali na stare wersje projektu, które nie miały klasy, której szukali. Klasa, która nie została znaleziona, jest tylko w wersji 2 HSQLDB, dostępnej z http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_3/

+0

Dzięki, to było szczęście, że wstawiłeś tę odpowiedź wczoraj! –

Powiązane problemy