Подтвердить что ты не робот

Play 2.5.3: Сообщение об ошибке Cryptic: Исключено в Netty java.lang.NoClassDefFoundError

[error] p.c.s.n.PlayRequestHandler - Исключено попадание в Netty       java.lang.NoClassDefFoundError: Не удалось инициализировать класс play.api.http.DefaultHttpErrorHandler $              в

Я получаю сообщение об ошибке, и мое приложение не запускается в режиме dev.

Ошибка не дает мне никаких подробностей о том, что пошло не так. Я изменил уровень log в 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)
4b9b3361

Ответ 1

Я точно не знаю, в чем проблема, но я столкнулся с этой загадочной, бесполезной ошибкой, когда обнаружил ошибку в моем application.conf, где я пытался установить конфигурацию на основе переменной окружения, которая может или не может будь там. Ясно, что причина исключения и место, которое оно становится очевидным, довольно далеко друг от друга.

Поэтому я бы предложил проверить ваш application.conf на неправильную конфигурацию. Рассмотрим также любые зависимости, которые могли быть созданы для версий Play < 2.5. В принципе все, что может привести к тому, что приложение будет "неправильно инициализировано" из-за отсутствия лучшего термина.

EDIT: Я только что открыл еще одну причину этой ошибки, которая относится к категории "неправильной инициализации". Я изменил имя маршрута в файле маршрутов, но забыл изменить соответствующий обратный маршрут в моем шаблоне. Я чувствую, что это должно быть обнаружено раньше и с более интуитивной ошибкой, но независимо от этого, обратите внимание на это (или что-то подобное), а также на application.conf или routes.

Ответ 2

Упс.. java.lang.NoClassDefFoundError: Could not initialize class play.api.http.DefaultHttpErrorHandler$ ничего не говорит о том, что пошло не так. Одна из таких причин, с которыми я столкнулся, - это когда у меня отсутствовали/опечатки в моих конфигурационных свойствах и использовались форсунки.

Вы можете запустить приложение в режиме prod, чтобы увидеть более информативное сообщение об ошибке activator clean compile start.

....

[info] Готово к упаковке.

(Исходный сервер. Введите Ctrl + D для выхода из журналов, сервер останется в фоновом режиме)

Не удается запустить сервер. Ошибка конфигурации: Ошибка конфигурации [файл storage.conf @:/myproject/mymodule/target/universal/stage/conf/storage.conf: 16: Не удалось разрешить замену значению: ${storage.cluster.name}]     at play.api.Configuration $.configError(Configuration.scala: 154)     ....