内部只读数据库存储在其自己的仅资源jar文件中。模块化后,DriverManager无法找到数据库文件,从而导致以下错误消息。
FATAL : 09:13:32 (830) - could not reopen database
org.hsqldb.HsqlException: Database does not exists: /database/prodsoft
我正在使用模块化和Maven将公司的应用程序从使用ANT的JDK8转换为JDK11。它是使用Eclipse开发的。已经解决了许多问题,但是对于这个问题,我自己找不到解决方案。
我已经尝试将数据库文件从其自己的项目移至使用该项目的 Kernel 项目的maven资源文件夹中。 我还尝试 打开 数据库; (资源文件夹)在内核的module-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);
答案 0 :(得分:0)
我看过http://hsqldb.org/,其中宣布了将来的2.5版。我认为2.4.1版仅在Java 10之前兼容,但是我没有用Java 9和10测试我的情况。
作为解决方法,我将在程序启动时导出数据库,并在使用后将其删除。 新版本的hsqldb驱动程序可用后,我将更新此问题。