2016-05-10 43 views
19

[error] p.c.s.n.PlayRequestHandler - Exception caught in Netty java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$ atRiproduci 2.5.3: Messaggio di errore criptico: Eccezione rilevata in Netty java.lang.NoClassDefFoundError

Ricevo un messaggio di errore e la mia app non si avvia in modalità dev.

L'errore non mi fornisce dettagli su cosa è andato storto. Ho cambiato il livello di log in logback.xml in DEBUG, ma non è stato d'aiuto.

Qualche suggerimento su come indagare il problema? Una settimana fa ha funzionato bene e da allora non ci sono stati cambiamenti nelle fonti e nella configurazione. Ha smesso di funzionare per un motivo sconosciuto.

Edit1: Come abilitare la registrazione più dettagliata? Altrimenti non è assolutamente chiaro da dove provenga l'errore.

Edit2: ha cambiato il titolo

(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

[questa domanda potrebbe aiutare] (http://stackoverflow.com/questions/31491931/ warning-node-js-detection-failed-sbt-will-use-the-rhino-based-trireme-javascri) anch'io penso che la prima riga sia molto chiara. –

+0

@ PiNg2Eiw si, quello è chiaro. ma è solo un avvertimento. Devo capire perché ottengo p.c.s.n.PlayRequestHandler - Eccezione rilevata in Netty –

+0

Hai provato 'sbt clean'? – rethab

risposta

38

Non so esattamente che cosa il vostro problema è, ma ho incontrato questo, l'errore inutile criptico quando ho scoperto un errore nel mio application.conf in cui stavo cercando per impostare una configurazione basata su una variabile di ambiente che può o non può essere lì. Chiaramente, la causa dell'eccezione e il punto in cui diventa evidente sono piuttosto distanti.

Quindi suggerirei di controllare il vostro application.conf per una configurazione errata. Prendi in considerazione anche eventuali dipendenze che potrebbero essere state create per le versioni di Play < 2.5. Fondamentalmente tutto ciò che potrebbe causare l'applicazione di "mis-initalized" per mancanza di un termine migliore.

MODIFICA: ho appena scoperto un'altra causa di questo errore che rientra nella categoria di "inizializzazione errata". Ho cambiato il nome di una rotta nel mio file di rotte ma ho dimenticato di cambiare la rotta inversa corrispondente nel mio modello. Sento che questo dovrebbe essere catturato prima e con un errore più intuitivo, ma a prescindere, fai attenzione a questo (o qualcosa di simile) pure in application.conf o routes.

+0

Colpiscilo proprio ora mentre eseguivo la migrazione da 2.4 a 2.5 ed era una stringa errata (nome errato) (nome classe) in application.conf per me. – Techmag

+0

Felice di averlo trovato. È difficile. – Vidya

+1

Confermato: ho provato ad aggiungere una variabile di ambiente globale a application.conf e questo bloccherà appena l'app Play se non imposti questa variabile. –

11

Oops .. java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$ non dice nulla di ciò che è andato storto. Uno dei motivi che ho riscontrato è quando mi mancavano/errori di digitazione nelle mie proprietà di configurazione e uso iniettori di guizzi.

È possibile eseguire l'app in modalità prod per visualizzare un messaggio di errore più informativo 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) ....