【发布时间】:2015-07-02 19:20:09
【问题描述】:
我试图在我的Build.scala 中使用sqlite-jdbc driver 在编译之前生成一个带有一些必要表的sqlite db。这就是我为实现这一目标而写的:
compile in Compile <<= (compile in Compile) map { result =>
val sqliteDb = file("my_sqlite.db")
if (!sqliteDb.exists()) {
val connection = DriverManager.getConnection(s"jdbc:sqlite:${sqliteDb.getAbsolutePath}")
val statement = connection.prepareStatement("create table EXAMPLE ( ... );")
statement.execute()
statement.close()
connection.close()
}
result
}
这一切都很好,但是当我运行 compile 时,我得到了这个错误:
[error] (my-project/compile:compile) java.sql.SQLException: No suitable driver found for jdbc:sqlite:/Users/2rs2ts/src/my-project/my_sqlite.db
现在这有点令人沮丧,因为我认为我可以通过创建递归项目将该依赖项添加到 Build.scala 的类路径中。我的目录结构如下:
my-project/
project/
Build.scala
build.sbt
project/
build.sbt
而my-project/project/project/build.sbt 看起来像这样:
libraryDependencies += "org.xerial" % "sqlite-jdbc" % "3.8.10.1"
编辑:我也把那行放在my-project/project/build.sbt 中,但它没有解决我的问题。
那么……我做错了什么?我需要对类路径的这种依赖才能使 sqlite 驱动程序正常工作。
【问题讨论】:
-
无论您面临何种错误消息,您都应该不在编译时进行此类工作。编译时间可能足够长,可以尽可能多地跳过它,并且您正在为它添加更多工作。不要!
-
@JacekLaskowski 在对项目进行任何操作之前,我试图保证该文件存在并且具有正确的表。这包括:运行它,运行它的测试,并以不同的格式打包它。