Playframework [Scala]:Class 在 Play for Scala 的类路径中找不到
Playframework [Scala]: Class not found in classpath in Play for Scala
我已经添加到 build.sbt
Apache Derby jar:
libraryDependencies += "org.apache.derby" % "derby" % "10.14.1.0" % Test
我也运行activator update
,似乎工作正常。
我需要在应用程序中嵌入 Derby 的数据库,因此我尝试实例化与它的连接:
println(1)
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance()
println(2)
val url = "jdbc:derby://localhost:1527/tempdb;create=true;user=me;password=mine"
val conn = DriverManager.getConnection(url)
println(3)
上面的代码只打印了1
然后产生了异常。我认为这主要是因为 class 不在 class 路径中(异常消息只是 class 名称)。这里缺少什么?
首先,不需要在驱动class对象上调用.newInstance()
。 "classic" 方法就是调用 Class.forName(arg)
以强制加载 class。
其次,Class.forName(arg)
调用是多余的,自 JBDC 4 以来不是必需的,正如 DriverManager
doc 所说:
Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.
第三,受益于在 Play 中配置数据库连接的标准方式!框架,通过 application.conf
文件中的配置尝试它可能很有用:
db.default.driver=org.apache.derby.jdbc.EmbeddedDriver
db.default.url="jdbc:derby://localhost:1527/tempdb..."
第四,% Test
依赖声明中的作用域看起来很可疑。如果要在应用程序的主代码中使用该连接,则会忽略该依赖项,并且不会找到 class。
我已经添加到 build.sbt
Apache Derby jar:
libraryDependencies += "org.apache.derby" % "derby" % "10.14.1.0" % Test
我也运行activator update
,似乎工作正常。
我需要在应用程序中嵌入 Derby 的数据库,因此我尝试实例化与它的连接:
println(1)
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance()
println(2)
val url = "jdbc:derby://localhost:1527/tempdb;create=true;user=me;password=mine"
val conn = DriverManager.getConnection(url)
println(3)
上面的代码只打印了1
然后产生了异常。我认为这主要是因为 class 不在 class 路径中(异常消息只是 class 名称)。这里缺少什么?
首先,不需要在驱动class对象上调用.newInstance()
。 "classic" 方法就是调用 Class.forName(arg)
以强制加载 class。
其次,Class.forName(arg)
调用是多余的,自 JBDC 4 以来不是必需的,正如 DriverManager
doc 所说:
Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.
第三,受益于在 Play 中配置数据库连接的标准方式!框架,通过 application.conf
文件中的配置尝试它可能很有用:
db.default.driver=org.apache.derby.jdbc.EmbeddedDriver
db.default.url="jdbc:derby://localhost:1527/tempdb..."
第四,% Test
依赖声明中的作用域看起来很可疑。如果要在应用程序的主代码中使用该连接,则会忽略该依赖项,并且不会找到 class。