ClassNotFoundException с Netbeans и базой данных H2 - PullRequest
1 голос
/ 25 февраля 2012

Таким образом, я следовал руководству на странице документации H2 и использовал метод «Подключение к базе данных с использованием JDBC» для подключения к базе данных. Сначала я добавил файл h2 - *. Jar в папку Lib (через Netbeans) и использовал следующее для подключения к моей базе данных, которую я ранее создал.

 Class.forName("org.h2.Driver");
 connection = DriverManager.getConnection("jdbc:h2:~/" + DatabaseName);

Оказалось, что это работает в среде IDE, однако, когда я попытался запустить приложение непосредственно из исполняемого файла jar, я получаю следующую ошибку:

 java.lang.ClassNotFoundException: org.h2.Driver ...

эта ошибка возникает в загрузчике классов Class.forName (). Поэтому я немного осмотрелся и обнаружил, что это серьезная проблема. Одним из решений, которое использовали люди, было извлечение класса Loader из текущего потока следующим образом:

 Thread t = Thread.currentThread();
 ClassLoader cl = t.getContextClassLoader();
 cl.getClass().getClassLoader();
 Class toRun = cl.loadClass("org.h2.Driver");

К сожалению, это, кажется, все еще приводит к той же самой ошибке, поэтому мне интересно, что я делаю неправильно. Должен ли я что-то делать, чтобы убедиться, что драйвер находится в пути класса? Я понятия не имею, как, если это так.

Спасибо!

1 Ответ

0 голосов
/ 26 февраля 2012

Вам необходимо добавить файл h2-*.jar в classpath при запуске приложения, например, используя

java -cp h2*.jar -jar yourApp.jar
...