java - 在一个位置有一个访问数据库文件,以便它可以在开发和分发时使用

标签 java netbeans jar ucanaccess

虽然我做了很多研究,但我仍在努力寻找放置我的访问数据库文件的正确位置,以便它可以与我的 java 项目和我的最终 jar 文件一起使用(不必为每个案例更改代码) .

我可以将它放在工作目录中,并在使用 NetBeans 时使用代码来获取它。

DriverManager.getConnection("jdbc:ucanaccess://" + "res/mydatabase.accdb");

但是,当我运行 jar 文件时,这不起作用(我猜这是因为该文件夹位置不再是工作目录)。

到目前为止,我考虑了两种方法:

  • 将数据库文件放在一个包中,以便在生成 jar 文件时,它是包的一部分。我已经看到这适用于图像文件,但不适用于数据库。

    DriverManager.getConnection("jdbc:ucanaccess://" + getClass.getResources("/res/mydatabase.accdb").getFile());
    

    这是行不通的。我还读了here您不能直接从可运行 JAR 文件中嵌入的副本打开数据库文件。

  • 我也看到了examples人们有绝对文件路径的地方,但我宁愿不要,因为我需要在不同的计算机上工作。 (不过请告诉我这是否是更好的解决方案)

我的第一个问题是:我可以在哪里存储该文件,以便在我从 NetBeans 运行它时以及从 jar 文件运行它时都能找到它?

我的第二个问题是:是否必须使用特定的代码行才能从该位置访问它?

最佳答案

如果您正在寻找一条不仅适用于开发而且适用于部署到所有可能的目标平台的“一个真正的”文字路径(相对或绝对),那么您可能期望过高。您可能需要满足于编写将派生(或提示)路径的代码,可能基于 user.home系统属性。

关于java - 在一个位置有一个访问数据库文件,以便它可以在开发和分发时使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219447/

相关文章:

android - Android 中的 Cordova jar

java - 在 git 服务器上发布后,一个带有 <tag> 的新标签被添加到我的 pom 中

java - 自动漂亮地格式化大量 Java 源文件

javascript - 如何消除 NetBeans 中绿色 Javascript 突出显示?

java - 在 mouseMove 上设置 jLabel 的图标并随时间更改图像

java - 如何找出jar文件中使用了哪些JSR?

java - 这是根据规范进行的 Java 双重解析行为吗?

java - 无法运行Spring maven项目,如何解决类路径包含多个SLF4J绑定(bind)?

java - 资源未找到异常 : for spark-java and velocity

java - 有没有办法在Intellij IDEA中查看引用的jar(库)的使用情况?