【问题标题】:Java SQLite - Unable to access .db-file inside executable jarJava SQLite - 无法访问可执行 jar 中的 .db 文件
【发布时间】:2018-08-30 08:03:51
【问题描述】:

我要连接的数据库文件位于:

\ProjectName\src\resources\database\database.db

如果我将我的应用程序捆绑到一个 jar 中,它位于:

\ProjectName\target\ProjectName-0.0.1-SNAPSHOT-jar-with-dependencies.jar\resources\database\database.db

此文件夹位于

C:\Users\用户名\Documents\JavaProjects\

我的代码方法:

private static final String CONNECTION = "jdbc:sqlite:" + System.getProperty("user.dir") + "\\ProjectName-0.0.1-SNAPSHOT-jar-with-dependencies.jar\\resources\\database\\database.db";

try(final Connection connection = DriverManager.getConnection(CONNECTION)) {
    final Statement statement = connection.createStatement();
    statement.setQueryTimeout(10);

    statement.executeUpdate(stmt);

    connection.close();
} catch (SQLException e) {
 //...
}

如果我双击 ProjectName-0.0.1-SNAPSHOT-jar-with-dependencies.jar 文件,我会得到:

路径 C:\Users\Username\Documents\JavaProjects\ProjectName\target\ProjectName-0.0.1-SNAPSHOT-jar-with-dependencies.jar\resources\database\database.db 不存在。

如果我将连接字符串更改为:

私有静态最终字符串连接 = "jdbc:sqlite::resource\resources\database\database.db";

然后我得到:

路径 C:\Users\Username\Documents\JavaProjects\ProjectName\target:resource 不存在

我使用 maven 和这个依赖:

<dependencies>

<dependency>
  <groupId>org.xerial</groupId>
  <artifactId>sqlite-jdbc</artifactId>
  <version>3.7.2</version>
</dependency>

</dependencies>

如何访问 .jar 文件中的 sqlite-database 文件?

【问题讨论】:

    标签: java database maven sqlite


    【解决方案1】:

    有几个问题。

    根据documentation,类路径数据库的前缀是jdbc:sqlite::resource:。注意资源后面的分号。

    下一个问题是,当你在 jar 中指定文件的包路径时,需要使用正斜杠(而不是反斜杠)。

    最后一个潜在的问题是你需要指定正确的包名并且文件应该被打包到jar中。来自\ProjectName\src\resources 的文件进入什么包?您似乎没有使用默认的 Maven 结构。鉴于pom.xmlprojectRoot 中,您应该将文件放入projectRoot/src/main/resources/。这样maven会将资源文件放入jar中。

    总结一下,如果你把文件放到projectRoot/src/main/resources/database/database.db,文件就会进入database.database包,正确的JDBC URL是:

    jdbc:sqlite::resource:database/database.db
    

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2015-01-16
      • 2012-07-21
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2012-05-04
      相关资源
      最近更新 更多