Scala Play framework onHandlerNotFound方法

Scala Play framework onHandlerNotFound方法,scala,global,playframework-2.1,Scala,Global,Playframework 2.1,我正在使用Play framework 2.1.1,当我试图添加一个全局对象来处理某些情况(如BadRequest、HandlerNotFound等)时,我遇到了一个奇怪的错误: 下面是my Global.scala的外观: object Global extends GlobalSettings { override def onStart(app: Application) { Logger.info("Application has started") } over

我正在使用Play framework 2.1.1,当我试图添加一个全局对象来处理某些情况(如BadRequest、HandlerNotFound等)时,我遇到了一个奇怪的错误:

下面是my Global.scala的外观:

object Global extends GlobalSettings {

  override def onStart(app: Application) {
    Logger.info("Application has started")
  }

  override def onStop(app: Application) {
    Logger.info("Application shutdown...")
  }

  override def onHandlerNotFound(request: RequestHeader): Result = {
    NotFound(
      views.html.common.notFoundPage(request.path)
    )
  }
}
以下是我启动应用程序时看到的内容:

overriding method onHandlerNotFound in trait GlobalSettings of type (request: play.api.mvc.RequestHeader)scala.concurrent.Future[play.api.mvc.SimpleResult]; method onHandlerNotFound has incompatible type 

它实际上在编译时失败,并抛出上面的错误。这背后的原因是什么?我很困惑,我的IntelliJ没有显示任何错误

您确定在构建项目时使用的是Play Framework 2.1吗

GlobalSettings
中确实定义了:

def onHandlerNotFound(request: RequestHeader): Result
文件内容如下:

也许您在IntelliJ和构建脚本中配置了不同的版本

对于2.2版本,您可以编写:

override def onHandlerNotFound(request: RequestHeader): Future[SimpleResult] = {
  Future.successful(NotFound(
    views.html.common.notFoundPage(request.path)
  ))
}
override def onHandlerNotFound(request: RequestHeader): Future[SimpleResult] = {
  Future.successful(NotFound(
    views.html.common.notFoundPage(request.path)
  ))
}