Вы можете найти файл myDatabase
. При работе на месте и без упаковки, например, из среды IDE вы можете сделать:
URL res = MyClass.class.getResource("/myDatabase");
String url = "jdbc:h2:" + res.toString();
, который выведет полный путь к ресурсу, например jdbc:h2:file:/home/.../classes/myDatabase
Это не будет работать, если вы упакуете свое приложение в JAR или WAR. В этом случае myDatabase
будет упаковано в ZIP-архив, чтобы процитировать это сообщение :
Основная проблема для архивированных баз данных и баз данных в
classpath: вы не можете сделать реальный произвольный доступ. Вы можете читать только из
поток. Требуется произвольный доступ, поэтому он моделируется так:
Когда search (pos) больше текущей позиции, тогда пропускается
(который в основном для чтения). Если позиция поиска меньше, то
Поток закрыт и вновь открыт. Это очень медленно.
Поддержка ZIP доступна только для чтения на основе Дополнительно> Документация по подключаемой файловой системе :
zip: файловая система на основе zip-файла, доступная только для чтения. Формат: zip: / zipFileName! /FileName.
Вы, вероятно, должны указать путь к myDatabase
, используя аргументы командной строки или системную переменную, и оставить его вне упакованного приложения.