Slick 3 配置 ProvisionException 连接数据库

Slick 3 configuration ProvisionException on connecting to the database

我是 slick 的新手,正在使用 3.1.1 版和 playframework 2.4.6 版。我在文档 http://slick.typesafe.com/doc/3.1.1/database.html 中遵循本指南。我得到的错误是

***ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.RuntimeException: java.lang.ClassNotFoundException: 
org.postgresql.ds.PGSimpleDataSource
  at controllers.Application.<init>(Application.scala:12)
  while locating controllers.Application
    for parameter 1 at router.Routes.<init>(Routes.scala:31)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router
1 error***

这是我在SBT中的第一个我放的这个

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick" % "3.1.1",
  "org.slf4j" % "slf4j-nop" % "1.6.4"
)

然后在我的 Application.Conf 我把这个

mydb = {
  dataSourceClass = org.postgresql.ds.PGSimpleDataSource
  properties = {
    databaseName = "mydatabasename"
    user = "postgres"
    password = "mypassword"
  }
  numThreads = 10
}

最后在我的控制器中我只有连接字符串 包控制器

import javax.sql.DataSource

import org.mindrot.jbcrypt.BCrypt
import play.api._
import play.api.mvc._
import slick.driver.PostgresDriver.api._
import scala.concurrent.ExecutionContext.Implicits.global


class Application extends Controller {

  val db = Database.forConfig("mydb")
  try {
    // ...
  } finally db.close()




  def index = Action {

    Ok("My First Controller")
  }

}

如您所见,我使用的是 postgres 驱动程序而不是 H2,因为我正在使用 postgres 并且这些凭据是正确的并且经过验证。

您需要将 slick-hikaricp 和 postgresql 驱动程序依赖项添加到 build.sbt 中。

   "com.typesafe.slick" %% "slick-hikaricp" % "3.1.1",
   "org.postgresql" % "postgresql" % "9.4-1206-jdbc4"

如果您是 slick 的新手,我建议您使用 slick 作为 plugin. Please take a look play-slick samples