【问题标题】:Play 2.5.3: Cryptic error message: Exception caught in Netty java.lang.NoClassDefFoundError播放 2.5.3:神秘错误消息:Netty java.lang.NoClassDefFoundError 中捕获的异常
【发布时间】:2016-09-05 10:05:01
【问题描述】:

[error] p.c.s.n.PlayRequestHandler - Netty 中捕获的异常 java.lang.NoClassDefFoundError:无法初始化类 play.api.http.DefaultHttpErrorHandler$ 在

我收到错误消息,我的应用程序无法在开发模式下启动。

这个错误没有给我任何关于哪里出了问题的细节。我将 logback.xml 中的日志级别更改为 DEBUG,但没有帮助。

对如何调查问题有任何建议吗?一周前它工作得很好,从那时起源和配置没有任何变化。它因未知原因停止工作。

Edit1:如何启用更详细的日志记录?否则绝对不清楚错误来自哪里。

Edit2:更改了标题

 (Server started, use Ctrl+D to stop and go back to the console...)

  Warning: node.js detection failed, sbt will use the Rhino based Trireme JavaScript engine instead to run JavaScript assets compilation, which in some cases may be orders of magnitude slower than using no
  de.js.
  [error] p.c.s.n.PlayRequestHandler - Exception caught in Netty
  java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$
          at play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:45)
          at play.core.server.Server$class.getHandlerFor(Server.scala:65)
          at play.core.server.NettyServer.getHandlerFor(NettyServer.scala:47)
          at play.core.server.netty.PlayRequestHandler.handle(PlayRequestHandler.scala:82)
          at play.core.server.netty.PlayRequestHandler.channelRead(PlayRequestHandler.scala:163)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
          at com.typesafe.netty.http.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:129)
          at com.typesafe.netty.http.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:96)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
  [error] p.c.s.n.PlayRequestHandler - Exception caught in Netty
  java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$
          at play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:45)
          at play.core.server.Server$class.getHandlerFor(Server.scala:65)
          at play.core.server.NettyServer.getHandlerFor(NettyServer.scala:47)
          at play.core.server.netty.PlayRequestHandler.handle(PlayRequestHandler.scala:82)
          at play.core.server.netty.PlayRequestHandler.channelRead(PlayRequestHandler.scala:163)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
          at com.typesafe.netty.http.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:129)
          at com.typesafe.netty.http.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:96)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)

【问题讨论】:

  • this question might help 我也确实认为第一行很清楚。
  • @PiNg2Eiw 是的,那个很清楚。但这只是一个警告。我需要弄清楚为什么我会得到 p.c.s.n.PlayRequestHandler - Netty 中捕获的异常
  • 你试过'sbt clean'吗?
  • @rethab。是的,我有。除此之外,我已经手动删除了所有构建文件。尽管如此,还是没有运气。
  • 您是否正在使用activator run 启动您的服务器?

标签: scala playframework playframework-2.5


【解决方案1】:

在我的情况下,以下依赖项是导致错误的原因

libraryDependencies += "com.google.cloud" % "gcloud-java-storage" % "0.2.5"

来源Getting ChannelException when adding Google cloud client library to Play 2.5

【讨论】:

    【解决方案2】:

    我不确切知道您的问题是什么,但是当我在application.conf 中发现一个错误时,我遇到了这个神秘的、无用的错误在那里。显然,异常的原因和它变得明显的地方相距甚远。

    所以我建议检查您的application.conf 是否存在错误配置。还要考虑可能为 Play 版本

    编辑:我刚刚发现了另一个属于“错误初始化”类别的错误原因。我更改了路由文件中的路由名称,但忘记更改模板中相应的反向路由。我觉得这应该尽快被捕获,并且会出现更直观的错误,但无论如何,在application.confroutes 中也要注意这个(或类似的东西)。

    【讨论】:

    • 刚才在我从 2.4 迁移到 2.5 时遇到了这个问题,对我来说,它是 application.conf 中的一个错误类型(大小写错误)的字符串(类名)。
    • 已确认:我尝试向 application.conf 添加一个全局环境变量,如果您不设置此变量,这只会使 Play 应用程序崩溃。
    • 已确认:application.conf 中的任何拼写错误都会导致此错误。检查每个参数值是否像“值”
    • 也已确认。就我而言,具体问题是我试图通过 ${?ENV_VAR} 进行环境变量覆盖,但忘记了问号。
    【解决方案3】:

    哎呀..java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$ 什么也没说。 我遇到的一个这样的原因是我的配置属性中缺少/拼写错误并使用了 guice 注入器。

    您可以在 prod 模式下运行您的应用,以查看更多信息错误消息 activator clean compile start

    ....

    [信息] 完成包装。

    (启动服务器。按Ctrl+D退出日志,服务器将保持在后台)

    糟糕,无法启动服务器。 配置错误:配置错误[storage.conf @ file:/myproject/mymodule/target/universal/stage/conf/storage.conf: 16: 无法解析替换为值:${storage.cluster.name}] 在 play.api.Configuration$.configError(Configuration.scala:154) ....

    【讨论】:

      猜你喜欢
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2014-09-18
      相关资源
      最近更新 更多