我试图在Play 2.3应用程序中使用Slick 2.1和MS SQL Server。我一直试图让Slick的代码生成器在Build.scala
中工作。这是因为MS SQL Server JDBC驱动程序不在maven上,我只是手动将驱动程序jar文件放在/lib
文件夹中。目前我收到此错误:
[error] (run-main-0) java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
这就是代码生成器所在的部分:
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = (dir / "slick").getPath
val url = "jdbc:sqlserver://localhost:1433;databaseName=mydb"
val jdbcDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"
val slickDriver = "com.typesafe.slick.driver.ms.SQLServerDriver"
val pkg = "db"
toError(r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, user, pswd), s.log))
val fname = outputDir + "/db/Tables.scala"
Seq(file(fname))
}
如何使S SQL代码生成器与MS SQL Server JDBC驱动程序一起播放?
答案 0 :(得分:0)
Play 2.3中的SBT似乎没有自动将lib
文件夹的内容添加到类路径中,所以在为我的Intellij IDEA运行idea
命令之后我偶然发现了一个解决方案,其中包括从lib到classpath的jar。
此外,在针对此特定问题的最终解决方案进行大量挖掘之后,将开源jtds
驱动程序用于光滑的代码生成器,并将ms jdbc驱动程序用于其余应用程序。这就是生成器代码最终看起来像:
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = "app"
val url = "jdbc:jtds:sqlserver://localhost:1433;databaseName=mydb"
val jdbcDriver = "net.sourceforge.jtds.jdbc.Driver"
val slickDriver = "com.typesafe.slick.driver.ms.SQLServerDriver"
val pkg = "db"
toError(r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, user, pswd), s.log))
val fname = "Tables.scala"
Seq(file(fname))
}
答案 1 :(得分:0)
在切线上,对于sbt 0.13.x,建议更改scala.slick.codegen.SourceCodeGenerator
- > slick.codegen.SourceCodeGenerator