首页 > 解决方案 > 无法加载 play.http.errorHandler

问题描述

我在 Scala 中使用 Play 来开发一个网站。application.conf为了包含默认错误处理,我在文件中添加了以下行:

play.http.errorHandler = play.api.http.HtmlOrJsonHttpErrorHandler

我是根据官方文档的建议完成的。但是,当我添加此行时,出现以下错误:

play.api.PlayException: Cannot load play.http.errorHandler[play.http.errorHandler [play.api.http.HtmlOrJsonHttpErrorHandler] was not loaded.]
at play.utils.Reflect$.loadClass$1(Reflect.scala:111)
at play.utils.Reflect$.configuredClass(Reflect.scala:124)
at play.utils.Reflect$.bindingsFromConfiguration(Reflect.scala:50)
at play.api.http.HttpErrorHandler$.bindingsFromConfiguration(HttpErrorHandler.scala:54)
at play.api.inject.BuiltinModule$$anonfun$$lessinit$greater$1.$anonfun$new$2(BuiltinModule.scala:85)
at play.api.inject.BuiltinModule$$anonfun$$lessinit$greater$1.$anonfun$new$1(BuiltinModule.scala:35)
at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)
at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
Caused by: java.lang.ClassNotFoundException: play.api.http.HtmlOrJsonHttpErrorHandler
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at play.utils.Reflect$.loadClass$1(Reflect.scala:105)
    at play.utils.Reflect$.configuredClass(Reflect.scala:124)
    at play.utils.Reflect$.bindingsFromConfiguration(Reflect.scala:50)
    at play.api.http.HttpErrorHandler$.bindingsFromConfiguration(HttpErrorHandler.scala:54)
    at play.api.inject.BuiltinModule$$anonfun$$lessinit$greater$1.$anonfun$new$2(BuiltinModule.scala:85)
    at play.api.inject.BuiltinModule$$anonfun$$lessinit$greater$1.$anonfun$new$1(BuiltinModule.scala:35)
    at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)

这是我去 localhost 时得到的屏幕截图:在此处输入图像描述

知道为什么会发生这种情况以及如何解决吗?

标签: scalaplayframeworkplayframework-2.3

解决方案


比较Play 2.6.25 和 2.7.0 之间的变化,我们推断这HtmlOrJsonHttpErrorHandler是由Add an HttpErrorHandler 引入的,它选择客户端的首选媒体类型 #8540。项目中使用的 Play 版本应指定project/plugins.sbt​​为类似

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.0")

如果您使用的是 2.6.0,请遵循迁移指南到 2.7。


推荐阅读