7

尝试使用 play 框架访问 oracle DataSource 时出现以下错误:

sbt.PlayExceptions$CompilationException: Compilation error[You do not have an implicit Application in scope. If you want to bring
the current running Application into context, just add import play.api.Play.current]

build.properties:

sbt.version=0.12.2
db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url="jdbc:oracle:thin:@(.....basic))))"
db.default.user="username"
db.default.pass="passowrd"

控制器Application.scala如下:

package controllers

import play.api._
import play.api.mvc._
import play.api.db._


object Application extends Controller {

  val d = DB.getDataSource();

  def index = Action { request => Ok("something") } 

}

是什么导致了这个问题。一切对我来说都是正确的。

供参考。玩!2.1.4(使用 Java 1.6.0_24 和 Scala 2.10.0)

-谢谢

4

1 回答 1

19

错误消息实际上是在告诉您要做什么:您没有范围内的隐式应用程序。如果您想将当前正在运行的应用程序带入上下文,只需添加 import play.api.Play.current

import play.api.Play.current

这就是 getDataSource 方法的样子:

  def getDataSource(name: String = "default")(implicit app: Application): DataSource = app.plugin[DBPlugin].map(_.api.getDataSource(name)).getOrElse(error)

正如您所看到的,它在第二个参数列表中使用了一个隐式应用程序,编译器正在寻找一个可以在导入中找到的隐式声明的应用程序。

于 2013-09-16T18:27:58.717 回答