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

Акка (2.3.0) не загружает класс Slf4jEventHandler с помощью java.lang.ClassNotFoundException

Я перенес из Akka 2.2.3 в 2.3.0-RC4 и получил это сообщение об ошибке при запуске приложения:

error while starting up loggers
akka.ConfigurationException: Logger specified in config can't be loaded 
[akka.event.slf4j.Slf4jEventHandler] due to
[java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jEventHandler]

У меня есть эти зависимости SBT:

val akkaVersion = "2.3.0-RC4"
"com.typesafe.akka" % "akka-actor_2.10" % akkaVersion
"com.typesafe.akka" % "akka-remote_2.10" % akkaVersion
"com.typesafe.akka" % "akka-kernel_2.10" % akkaVersion
"com.typesafe.akka" % "akka-slf4j_2.10" % akkaVersion
"com.typesafe.akka" % "akka-testkit_2.10" % akkaVersion % "test"

Ведение журнала работало нормально, когда я использовал версию Akka 2.2.3 непосредственно перед обновлением (никаких других изменений в проекте не было сделано).

Вот как я использую logger в своем application.conf:

akka.loggers = ["akka.event.slf4j.Slf4jEventHandler"]

Я проверил файлы jar, загруженные SBT, и Slf4jEventHandler присутствует только в более старой версии:

  • Содержит NO Slf4jEventHandler: ~/.ivy2/cache/com.typesafe.akka/akka-slf4j_2.10/jars/akka-slf4j_2.10-2.3.0-RC4.jar
  • Содержит Slf4jEventHandler: ~/.ivy2/cache/com.typesafe.akka/akka-slf4j_2.10/jars/akka-slf4j_2.10-2.2.3.jar

Интересно, следует ли мне использовать какой-то другой класс logger, я пропущу зависимость, или, может быть, он не упакован по ошибке. Я не мог найти ничего в документах относительно этого изменения.

4b9b3361

Ответ 1

Я почти открыл билет, потому что я не нашел ничего в документации здесь или здесь. Но затем я нашел это ticket, в соответствии с которым Slf4jEventHandler удаляется, поскольку он устарел. Я выполнил этот поиск и нашел scaladoc, у которого есть это сообщение об отказе: "(Начиная с версии 2.2) используйте akka.event.slf4j.Slf4jLogger)".

Я обновил эту строку в application.conf:

akka.loggers = ["akka.event.slf4j.Slf4jEventHandler"]

:

akka.loggers = ["akka.event.slf4j.Slf4jLogger"]

и все это сработало.

Надеюсь, вы найдете это решение полезным.