Таким образом, я следовал руководству на странице документации 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");
К сожалению, это, кажется, все еще приводит к той же самой ошибке, поэтому мне интересно, что я делаю неправильно. Должен ли я что-то делать, чтобы убедиться, что драйвер находится в пути класса? Я понятия не имею, как, если это так.
Спасибо!