Как открыть ресурс 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, я обновлю этот вопрос.

Другие вопросы по тегам