无法让 Scala、Slick 和 MySQL 一起工作
Can't make Scala, Slick and MySQL work together
我试图让这三个一起工作,但不能。缺乏流畅的文档。我有 application.conf 类型安全配置设置,如下所示:
mysql = {
url = "jdbc:mysql://localhost/slickdb"
slick.driver=scala.slick.driver.MySQLDriver
driver=com.mysql.cj.jdbc.Driver
properties = {
user = root
password = null
}
connectionPool = true
keepAliveConnection = true
}
和build.sbt相关依赖:
libraryDependencies ++= Seq(
...
"org.eclipse.jetty" % "jetty-webapp" % "9.2.15.v20160210" % "container",
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided",
"com.typesafe.slick" %% "slick" % "3.2.0",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.0",
"mysql" % "mysql-connector-java" % "latest.integration"
...
)
并尝试编译一个简单的 DAO
import slick.jdbc.MySQLProfile.api._
class testDAO {
private val db = Database.forConfig("mysql")
}
但是 SBT 编译器向我抛出这个异常:
java.lang.ClassNotFoundException: true
at java.lang.ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at slick.util.ClassLoaderUtil$$anon.loadClass(ClassLoaderUtil.scala:17)
at slick.jdbc.JdbcDataSource$.loadFactory(JdbcDataSource.scala:37)
at slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:46)
我也试过了:
import slick.jdbc.MySQLProfile.api._
import slick.basic.DatabaseConfig
class testDAO {
val dbConfig = DatabaseConfig.forConfig("mysql")
}
但我得到另一个异常:
slick.SlickException: Configured profile com.mysql.cj.jdbc.Driver does not conform to requested profile scala.runtime.Nothing$
at slick.basic.DatabaseConfig$.forConfig(DatabaseConfig.scala:99)
at com.unamur.service.testDAO.<init>(CatDAO.scala:18)
at com.unamur.app.TestServlet.<init>(TestServlet.scala:11)
at ScalatraBootstrap.init(ScalatraBootstrap.scala:7)
有人有想法吗?提前致谢。
connectionPool = true
是这里的问题。您需要提供实现,HikariCP
或其他内容。
我试图让这三个一起工作,但不能。缺乏流畅的文档。我有 application.conf 类型安全配置设置,如下所示:
mysql = {
url = "jdbc:mysql://localhost/slickdb"
slick.driver=scala.slick.driver.MySQLDriver
driver=com.mysql.cj.jdbc.Driver
properties = {
user = root
password = null
}
connectionPool = true
keepAliveConnection = true
}
和build.sbt相关依赖:
libraryDependencies ++= Seq(
...
"org.eclipse.jetty" % "jetty-webapp" % "9.2.15.v20160210" % "container",
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided",
"com.typesafe.slick" %% "slick" % "3.2.0",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.0",
"mysql" % "mysql-connector-java" % "latest.integration"
...
)
并尝试编译一个简单的 DAO
import slick.jdbc.MySQLProfile.api._
class testDAO {
private val db = Database.forConfig("mysql")
}
但是 SBT 编译器向我抛出这个异常:
java.lang.ClassNotFoundException: true
at java.lang.ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at slick.util.ClassLoaderUtil$$anon.loadClass(ClassLoaderUtil.scala:17)
at slick.jdbc.JdbcDataSource$.loadFactory(JdbcDataSource.scala:37)
at slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:46)
我也试过了:
import slick.jdbc.MySQLProfile.api._
import slick.basic.DatabaseConfig
class testDAO {
val dbConfig = DatabaseConfig.forConfig("mysql")
}
但我得到另一个异常:
slick.SlickException: Configured profile com.mysql.cj.jdbc.Driver does not conform to requested profile scala.runtime.Nothing$
at slick.basic.DatabaseConfig$.forConfig(DatabaseConfig.scala:99)
at com.unamur.service.testDAO.<init>(CatDAO.scala:18)
at com.unamur.app.TestServlet.<init>(TestServlet.scala:11)
at ScalatraBootstrap.init(ScalatraBootstrap.scala:7)
有人有想法吗?提前致谢。
connectionPool = true
是这里的问题。您需要提供实现,HikariCP
或其他内容。