为什么不自动将libraryDependencies添加到类路径?我试图将jdbc-sqlite添加到我的项目,但它找不到驱动程序。 lib依赖项由sbt管理,因此它应该是类路径的一部分。但我猜不是,所以如何添加呢?
定义对这些库的路径引用只是存在于我的盒子上,这是不好的做法。
name := "CacheWarmer"
version := "0.1"
scalaVersion := "2.12.3"
mainClass in Compile := Some("process.Daemon")
libraryDependencies ++= Seq(
"org.xerial" % "sqlite-jdbc" % "3.20.0" % "test"
)
package process
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
import java.sql.Statement
代码
object Daemon {
def main(args: Array[String]): Unit = {
//Gets java.sql.SQLException: No suitable driver found for jdbc:sqlite::memory:
val connection:Connection = DriverManager.getConnection("jdbc:sqlite::memory:")
}
}
答案 0 :(得分:2)
您已将sqlite-jdbc
依赖项放入test
范围。当然,这种依赖关系只能在测试类路径中使用,但不能在“主”类路径中使用。通常,您使用test
范围来测试依赖关系,例如测试库如Scalatest或JUnit。
为了使您的“main”类路径中的库可用,您必须使用compile
范围,或者等效地,根本不使用范围分类器:
libraryDependencies ++= Seq(
"org.xerial" % "sqlite-jdbc" % "3.20.0"
)
答案 1 :(得分:1)
Maven Central告诉我要在SBT中使用该依赖项:
libraryDependencies += "org.xerial" % "sqlite-jdbc" % "3.20.0"
- >请注意,没有双%
%%
告诉sbt将当前的scala版本附加到工件名称。假设你正在运行scala 2.11:
libraryDependencies += "org.some" %% "myscala" % "3.20.0"
被解雇了:
`libraryDependencies += "org.some" % "myscala_2.11" % "3.20.0"`