Как открыть ресурс HSQLDB внутри jar (только для чтения) после модульности с помощью DriverManager? - PullRequest
0 голосов
/ 08 января 2019

Внутренняя база данных только для чтения хранится в своем собственном файле только для ресурсов. После модульности файл базы данных не может быть найден 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 проекта Ядро , где он используется. Я также пытался открыть базу данных; (папку ресурсов) в файле module-info.java проекта Kernel .

Файлы базы данных 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 Ответ

0 голосов
/ 09 января 2019

Я посмотрел на http://hsqldb.org/, где была объявлена ​​версия 2.5 на будущее. Я думаю, что версия 2.4.1 совместима только до Java 10, но я не тестировал свой случай с Java 9 и 10.

В качестве обходного пути я экспортирую базу данных при запуске программы и удаляю ее после использования. Как только появится новая версия драйвера hsqldb, я обновлю этот вопрос.

...