【发布时间】:2016-03-11 07:50:55
【问题描述】:
我开始学习和试验 slick。
我正在尝试连接到由我们的 DBA 设置的 oracle 开发数据库。
但是我遇到了问题,我无法连接。
这是我到目前为止所做的:
oracledev = { url = "jdbc:oracle:thin:@//vdevdbms2:4208/TPSDEV.IADB.ORG" driver = com.typesafe.slick.driver.oracle.OracleDriver connectionPool = disable keepAliveConnection = true }
我的构建中有以下内容
resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/" libraryDependencies ++= Seq( "com.smartlogic.osclient" % "Semaphore-OS-Client" % "Semaphore-3.7.2", "com.typesafe.slick" %% "slick-extensions" % "3.1.0", "org.slf4j" % "slf4j-nop" % "1.6.4" )
到目前为止的代码很简单:
object SlickSpike extends App {
val db = Database.forConfig("oracledev")
}
我收到以下错误:
线程“主”java.lang.ClassNotFoundException 中的异常:禁用 在 java.lang.ClassLoader.findClass(ClassLoader.java:530) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 slick.util.ClassLoaderUtil$$anon$1.loadClass(ClassLoaderUtil.scala:12) 在 slick.jdbc.JdbcDataSource$.loadFactory$1(JdbcDataSource.scala:30) 在 slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:39) 在 slick.jdbc.JdbcBackend$DatabaseFactoryDef$class.forConfig(JdbcBackend.scala:268) 在 slick.jdbc.JdbcBackend$$anon$3.forConfig(JdbcBackend.scala:33) 在 SlickSpike$.delayedEndpoint$SlickSpike$1(SlickSpike.scala:16) 在 SlickSpike$delayedInit$body.apply(SlickSpike.scala:14) 在 scala.Function0$class.apply$mcV$sp(Function0.scala:34) 在 scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 在 scala.App$class.main(App.scala:76) 在 SlickSpike$.main(SlickSpike.scala:14) 在 SlickSpike.main(SlickSpike.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
如果我删除该行: **
connectionPool = 禁用
**
然后我得到以下错误:
线程“主”java.lang.ClassNotFoundException 中的异常: slick.jdbc.hikaricp.HikariCPJdbcDataSource$ 在 java.lang.ClassLoader.findClass(ClassLoader.java:530) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 slick.util.ClassLoaderUtil$$anon$1.loadClass(ClassLoaderUtil.scala:12) 在 slick.jdbc.JdbcDataSource$.loadFactory$1(JdbcDataSource.scala:30) 在 slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:35) 在 slick.jdbc.JdbcBackend$DatabaseFactoryDef$class.forConfig(JdbcBackend.scala:268) 在 slick.jdbc.JdbcBackend$$anon$3.forConfig(JdbcBackend.scala:33) 在 SlickSpike$.delayedEndpoint$SlickSpike$1(SlickSpike.scala:16) 在 SlickSpike$delayedInit$body.apply(SlickSpike.scala:14) 在 scala.Function0$class.apply$mcV$sp(Function0.scala:34) 在 scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 在 scala.App$class.main(App.scala:76) 在 SlickSpike$.main(SlickSpike.scala:14) 在 SlickSpike.main(SlickSpike.scala)
我做错了什么?
我只想拥有一个 10 个连接池,并连接到数据库,但我不知道如何设置它。有人可以帮忙吗?
编辑2
我解决了最初的问题,但我仍有疑问,无法让一切正常工作。
我这样改变我的构建:
libraryDependencies ++= Seq( "org.slf4j" % "slf4j-api" % "1.7.13", "org.slf4j" % "slf4j-simple" % "1.7.13", "com.smartlogic.osclient" % "Semaphore-OS-Client" % "Semaphore-3.7.2" exclude("org.slf4j","slf4j-log4j12"), "com.typesafe.slick" %% "slick" % "3.1.0", "com.typesafe.slick" %% "slick-extensions" % "3.1.0", "com.typesafe.slick" %% "slick-hikaricp" % "3.1.0", "com.oracle" % "ojdbc6" % "11.2.0.2.0" )
我求助于添加 slick-hikaricp,即使我最初并不打算使用。 我现在也明白配置中的 oracle 驱动程序是实际的 oracle 驱动程序,而不是光滑的驱动程序。这实际上反映在我对配置所做的更改中,如下所示:
oracledev = { url = "jdbc:oracle:thin:@//vdevdbms2:4208/TPSDEV.IADB.ORG" driver = oracle.jdbc.OracleDriver // connectionPool = disable keepAliveConnection = true //databaseName = "BRIKPOOLPARTYDEV" user = "*******" password = "*******" }
问题:
1 - 使用 Oracle 时默认需要 slick-hikaricp。事实上,如果我不添加它并注释掉 connectionPool = disable,在我的情况下,无论如何未注释时都不起作用,程序无法编译。
2 - 我仍然无法连接,我错过了什么吗?
请帮忙
【问题讨论】:
标签: oracle scala slick slick-3.0