2016-05-10 41 views
19

[error] p.c.s.n.PlayRequestHandler - Exception caught in Netty java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$ at再生2.5.3:謎めいたエラーメッセージ:Nettyで例外が発生しましたjava.lang.NoClassDefFoundError

エラーメッセージが表示され、私のアプリは開発モードで起動しません。

このエラーは、何がうまくいかなかったかについて私に詳細を教えてくれません。 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) 
+0

引き起こしていたものだった([この質問は役立つかもしれない] http://stackoverflow.com/questions/31491931/私は最初の行が非常に明確だと思います。 –

+0

@ PiNg2Eiwはい、それは明らかです。それは単なる警告です。なぜp.c.s.n.PlayRequestHandlerを取得するのか把握する必要があります - Nettyにキャッチされた例外 –

+0

'sbt clean'を試みましたか? – rethab

答えて

38

タイトルを変更し、私はあなたの問題がある正確に把握していないが、私は私がしようとしていた私のapplication.confに誤りを発見したとき、私はこの不可解な、役に立たないエラーが発生しましたそこにあるかもしれない環境変数に基づいて設定を行うことができます。明らかに、例外の原因とそれが明らかになる場所はかなり離れています。

application.confの設定ミスを確認することをお勧めします。 Playバージョン< 2.5用に作成された可能性のある依存関係も考慮してください。基本的には、より良い言葉の欠如のためにアプリケーションが「誤って初期化」される原因となるもの。

EDIT:このエラーの原因が「誤った初期化」に該当することが判明しました。ルートファイル内のルート名を変更しましたが、テンプレート内の対応する逆ルートを変更するのを忘れました。私は、これをより早く、より直感的なエラーで捕らえなければならないと感じていますが、これに似ているかどうかは、application.confまたはroutesで調べてください。

+0

私は2.4から2.5に移行しましたが、私にとってはapplication.confのミスタイプ(ミスケース)の文字列(クラス名)でした。 – Techmag

+0

うれしいです。それはトリッキーなものです。 – Vidya

+1

確認済み:application.confにグローバル環境変数を追加しようとしましたが、この変数を設定しないとPlayアプリケーションがクラッシュします。 –

11

おっと... java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$は何がうまくいかなかったかを示します。 私が遭遇したこのような理由の1つは、私の構成プロパティにミス/誤植があり、guiceインジェクタを使用したときです。

アプリをプロードモードで実行すると、より有益なエラーメッセージactivator clean compile startが表示されます。

....

[info] Done packaging.

(Starting server. Type Ctrl+D to exit logs, the server will remain in background)

Oops, cannot start the server. Configuration error: Configuration error[storage.conf @ file:/myproject/mymodule/target/universal/stage/conf/storage.conf: 16: Could not resolve substitution to a value: ${storage.cluster.name}] at play.api.Configuration$.configError(Configuration.scala:154) ....

関連する問題