gpt4 book ai didi

java - 如何使用DriverManager模块化后打开jar内的HSQLDB资源(只读)?

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:31 25 4
gpt4 key购买 nike

内部只读数据库存储在其自己的仅资源 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资源文件夹。我还尝试在 Kernel 项目的 module-info.java 中打开数据库;(资源文件夹)。

数据库文件prodsoft.propertiesprodsoft.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);

最佳答案

我查看了http://hsqldb.org/其中宣布了 future 的 2.5 版本。我认为版本 2.4.1 只兼容 Java 10,但我没有使用 Java 9 和 10 测试我的案例。

作为解决方法,我将在程序启动时导出数据库并在使用后将其删除。一旦新版本的 hsqldb 驱动程序可用,我将更新此问题。

关于java - 如何使用DriverManager模块化后打开jar内的HSQLDB资源(只读)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54088723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com