【发布时间】: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