【问题标题】:Database file does not exist in Packed Jar FilePacked Jar 文件中不存在数据库文件
【发布时间】:2021-05-17 01:55:25
【问题描述】:

我有一个使用 MS 访问作为数据库的 JavaFX 项目,在 IntelliJ 中创建可执行 JAR 后,在 CMD 中运行 jar 时,我得到以下异常

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.x.x given file does not exist: resource\Account_Record.accdb
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:231)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)

这表明我的以下comction无法访问数据库文件:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        conn = DriverManager.getConnection("jdbc:ucanaccess://resource//Account_Record.accdb);

我检查了 Jar 文件,是的,里面有“Account_Record.accdb”,在 IntelliJ IDE 中运行 JAR 文件时,我没有收到任何错误,但无法使其独立!

【问题讨论】:

  • 为什么你认为驱动程序知道在 jar 文件中查找数据库?
  • @ScaryWombat 这就是我得到的其他驱动程序可以从这个Stack overflow Question
  • 您是否使用已接受答案中的语法而不是您在问题中发布的语法进行了尝试?
  • @James_D 是的,我做到了,还有很多其他方法,但没有任何效果^_^
  • 您提供的链接是针对 sqlite 而不是 UcanAccess,那么为什么您认为它可以读取 jar 中的数据库?

标签: java database ms-access javafx ucanaccess


【解决方案1】:

UcanAccess 仅在文件系统中查找数据库,您必须通过自己的代码提取它

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 2019-09-26
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多