scala - Play 2.5.3: Mensaje de error críptico: se detectó una excepción en Netty java.lang.NoClassDefFoundError
playframework playframework-2.5 (3)
[error] pcsnPlayRequestHandler - Excepción capturada en Netty java.lang.NoClassDefFoundError: No se pudo inicializar la clase play.api.http.DefaultHttpErrorHandler $ at
Aparece un mensaje de error y mi aplicación no se inicia en modo dev.
El error no me da ningún detalle sobre lo que salió mal. Cambié el nivel de registro en logback.xml a DEBUG, pero no ayudó.
¿Alguna sugerencia de cómo investigar el problema? Hace una semana funcionó bien y desde entonces no hubo cambios en las fuentes y la configuración. Dejó de funcionar por una razón desconocida.
Edit1: ¿Cómo habilito un registro más detallado? De lo contrario, no está del todo claro de dónde viene el error.
Edit2: cambió el título
(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)
En mi caso, la dependencia a continuación fue lo que causó el error.
libraryDependencies += "com.google.cloud" % "gcloud-java-storage" % "0.2.5"
Fuente Obtención de ChannelException al agregar la biblioteca de cliente de la nube de Google a Play 2.5
No sé exactamente cuál es su problema, pero encontré este error críptico e inútil cuando descubrí un error en mi application.conf
donde intentaba establecer una configuración basada en una variable de entorno que puede o no estar allí. Claramente, la causa de la excepción y el lugar en que se hace evidente están bastante alejados.
Por lo tanto, sugeriría que compruebe su application.conf
para una configuración incorrecta. Considere también cualquier dependencia que pueda haber sido construida para las versiones Play <2.5. Básicamente, cualquier cosa que pueda hacer que la aplicación se "pierda" por falta de un término mejor.
EDIT: Acabo de descubrir otra causa de este error que cae en la categoría de "inicialización errónea". Cambié el nombre de una ruta en mi archivo de rutas pero olvidé cambiar la ruta inversa correspondiente en mi plantilla. Creo que esto debería detectarse antes y con un error más intuitivo, pero independientemente, busque esto (o algo similar) también en application.conf
o routes
.
Vaya, java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$
no dice nada que no java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$
correctamente. Una de las razones por las que me he encontrado es cuando faltaba / errores tipográficos en mis propiedades de configuración y utilizaba inyectores inteligentes.
Puede ejecutar su aplicación en modo prod para ver activator clean compile start
mensaje de error más informativo.
....
[info] Embalaje hecho.
(Iniciando el servidor. Escriba Ctrl + D para salir de los registros, el servidor permanecerá en segundo plano)
Vaya, no se puede iniciar el servidor. Error de configuración: error de configuración [storage.conf @ file: /myproject/mymodule/target/universal/stage/conf/storage.conf: 16: no se pudo resolver la sustitución a un valor: $ {storage.cluster.name}] en juego .api.Configuration $ .configError (Configuration.scala: 154) ....