【问题标题】:how to load binary db file from jars using slick in a sbt project如何在 sbt 项目中使用 slick 从 jar 中加载二进制 db 文件
【发布时间】:2021-10-01 19:37:20
【问题描述】:

我正在为我的团队开发一个测试套件包。我使用了 Scala 和 sbt (sbt native packager)。

在这个包中,我想包含一个二进制 Sqlite db 文件 (data.db) 来提供一些示例数据。但是,使用我的包的客户端无法加载此数据文件。

目前,我的项目结构是:

└── testkit
    └── src
        └── main
            ├── resources
            |   └── data.db  // binary sqlite database file
            └── scala
                └── Sample.scala

Sample.scala 中,我使用以下方式连接到数据库:

import slick.jdbc.JdbcBackend.Database
var url = getClass.getResource("/data.db").getFile
if (url.startsWith("file:/")) {
  url = url.drop(6)
}
val conn = Database.forURL("jdbc:sqlite:" + url, prop = Map.empty[String, String])

这在运行项目本身时有效。但是,当我发布此文件时,网址变为:

/path/to/testkit_2.12/0.0.1/jars/testkit_2.12.jar!/data.db

Slick 无法加载此文件。

非常感谢您的建议。

【问题讨论】:

  • sqlite 是否能够读取 JAR/ZIP 中的文件?我猜不会,所以如果它在 JAR 中,你必须从依赖 JAR 中“提取”文件,然后将它放在一个临时文件夹中。
  • 这能回答你的问题吗? Java read file from resources from jar

标签: scala jar slick


【解决方案1】:

谢谢大家,看来我会按照评论中的建议使用临时文件。

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 2011-07-30
    • 2016-10-01
    • 2013-05-06
    • 2012-01-18
    • 2014-09-19
    • 2017-12-11
    • 2013-05-15
    • 2018-01-07
    相关资源
    最近更新 更多