【问题标题】:Is it possible to access a SQLite database file outside of an executable JAR?是否可以访问可执行 JAR 之外的 SQLite 数据库文件?
【发布时间】:2011-03-28 15:28:17
【问题描述】:

我有一个部署为可执行 JAR 文件的应用程序。最初,这个 JAR 文件将与 MySQL 数据库通信,但最近我决定改用 SQLite。但是,在测试时,我发现从 JAR 文件运行我的应用程序时,我无法访问我的 SQLite 数据库文件。

我正在使用来自以下网站的 JDBC 驱动程序:http://zentus.com/sqlitejdbc/index.html

有什么我必须做的解决方法吗?

该驱动程序在我的 Eclipse 环境中测试时运行良好,但在 JAR 文件中似乎无法独立运行。任何帮助将不胜感激。

【问题讨论】:

    标签: sqlite jdbc executable-jar


    【解决方案1】:

    嗯,这里是“工作目录”这样的术语。它是您的应用程序启动的目录。因此,应用程序中的每个“相对”路径通常都相对于这个“工作目录”。

    现在让我们回到您的问题。当您设置文件的路径时,您可以将其设为相对、绝对或相对于 JAR 内部目录根目录,具体取决于您创建文件和设置路径的方式。

    因此,只需重新检查您的应用程序中的路径设置方式,并尝试使用相对路径,从相应目录运行您的应用程序。

    【讨论】:

    • 我尝试使用 C:\ 驱动器上文件的硬编码路径进行测试,仅用于测试。以下不起作用: Class.forName("org.sqlite.JDBC");连接连接 = DriverManager.getConnection("jdbc:sqlite:C:\\test.db");我也尝试使用 Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");但当然这不起作用,因为工作目录可能在 JAR 文件中,对吧?理想情况下,我希望我的 .db 文件位于 JAR 文件旁边。可以吗?:Connection conn = DriverManager.getConnection("jdbc:sqlite:..\\test.db");
    • 不,工作目录不在 JAR 中。尝试file://C:/some/dir 指定数据库路径的样式。
    • 感谢您的建议,但事实证明,如果我使用 Eclipse 的导出功能,则一切正常。当我使用 jar 命令使用自己的命令字符串时,它无法正常工作。奇怪,但因为太棒了,所以去 Eclipse!
    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多