Как открыть ресурс HSQLDB внутри jar (только для чтения) после модульности с помощью DriverManager?
Внутренняя база данных только для чтения хранится в своем собственном файле только для ресурсов. После модульности файл базы данных не может быть найден DriverManager, что приводит к следующему сообщению об ошибке.
FATAL : 09:13:32 (830) - could not reopen database
org.hsqldb.HsqlException: Database does not exists: /database/prodsoft
Я конвертирую приложение нашей компании из JDK8, используя ANT, в JDK11, используя модульность и Maven. Он разработан с Eclipse. Многие проблемы уже исправлены, но для этой проблемы я не могу найти решение самостоятельно.
Я уже пытался переместить файлы базы данных из своего собственного проекта в папку ресурсов maven проекта Kernel, где он используется. Я также пытался открыть базу данных; (папка ресурсов) в модуле-info.java проекта ядра.
Файлы базы данных prodsoft.properties и prodsoft.script теперь находятся в
src/main/resources/database/
Класс, который запускает DriverManager
src/main/java/de/benthin/dataaccess/DatabaseReadOnly
Драйвер hsqldb-2.4.1.jar был успешно найден и используется DriverManager.
// ApplicationProperties.DATABASE_CONNECTION = "jdbc:hsqldb:res:database/prodsoft"
db_con = DriverManager.getConnection(
properties.getValue(ApplicationProperties.DATABASE_CONNECTION),
properties.getValue(ApplicationProperties.DATABASE_USER),
properties.getValue(ApplicationProperties.DATABASE_PASSWORD)
);
db_con.setAutoCommit(true);
db_con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
db_con.setReadOnly(true);
1 ответ
Я заглянул на http://hsqldb.org/ где была объявлена версия 2.5 на будущее. Я думаю, что версия 2.4.1 совместима только до Java 10, но я не проверял свой случай с Java 9 и 10.
В качестве обходного пути я экспортирую базу данных при запуске программы и удаляю ее после использования. Как только появится новая версия драйвера hsqldb, я обновлю этот вопрос.