[erreur] p.c.s.n.PlayRequestHandler - Exception interceptée dans Netty Java.lang.NoClassDefFoundError: impossible d'initialiser la classe play.api.http.DefaultHttpErrorHandler $ à
Je reçois un message d'erreur et mon application ne démarre pas en mode dev.
L'erreur ne me donne aucun détail sur ce qui s'est mal passé. J'ai changé le niveau de journalisation dans logback.xml en DEBUG, mais cela n'a pas aidé.
Des suggestions comment enquêter sur le problème? Il y a une semaine, cela fonctionnait très bien et depuis lors, aucun changement n'a été apporté aux sources et à la configuration. Il a cessé de fonctionner pour une raison inconnue.
Edit1: Comment puis-je activer la journalisation plus prolixe? Sinon, on ne sait absolument pas d'où vient l'erreur.
Edit2: a changé le titre
(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)
Je ne sais pas exactement quel est votre problème, mais j’ai rencontré cette erreur cryptique et inutile lorsque j’ai découvert une erreur dans mon application.conf
dans laquelle j’essayais de définir une configuration basée sur une variable d’environnement susceptible de ne pas figurer. Il est clair que la cause de l'exception et l'endroit où elle apparaît sont assez éloignées.
Je suggère donc de vérifier votre application.conf
pour une mauvaise configuration. Pensez également aux dépendances éventuellement créées pour les versions de Play <2.5. Fondamentalement, tout ce qui pourrait causer une "mauvaise initialisation" de la demande faute d'une meilleure expression.
EDIT: Je viens de découvrir une autre cause de cette erreur qui entre dans la catégorie des "erreurs d’initialisation". J'ai changé le nom d'un itinéraire dans mon fichier itinéraires mais j'ai oublié de modifier l'itinéraire inverse correspondant dans mon modèle. Je pense que cela devrait être détecté plus tôt et avec une erreur plus intuitive, mais peu importe, cherchez ceci (ou quelque chose de similaire) aussi dans application.conf
ou routes
.
Oups .. Java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$
ne dit rien ce qui n'allait pas. Une des raisons que j'ai rencontrées est quand il me manquait des fautes de frappe dans mes propriétés de configuration et que j'utilisais des injecteurs guice.
Vous pouvez exécuter votre application en mode prod pour afficher un message d'erreur plus informatif, activator clean compile start
.
....
[info] Emballage terminé.
(Serveur de démarrage. Tapez Ctrl + D pour quitter les journaux, le serveur restera en arrière-plan)
Oups, impossible de démarrer le serveur . Erreur de configuration: Erreur de configuration [storage.conf @ fichier: /myproject/mymodule/target/universal/stage/conf/storage.conf: 16: impossible de résoudre le remplacement par une valeur: $ {storage.cluster.name}] sur play.api.Configuration $ .configError (Configuration.scala: 154) ....
Dans mon cas, la dépendance ci-dessous était la cause de l'erreur
libraryDependencies += "com.google.cloud" % "gcloud-Java-storage" % "0.2.5"
Source Obtention de ChannelException lors de l’ajout de la bibliothèque client Google Cloud à Play 2.5