Akka(2.3.0)无法使用java.lang.ClassNotFoundException加载Slf4jEventHandler类

时间:2014-02-21 19:20:27

标签: scala logging akka

我从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时,日志工作正常(项目中没有进行任何其他更改)。

以下是我在application.conf中使用记录器的方法:

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

我已经检查过SBT下载的jar文件,而Slf4jEventHandler只出现在旧版本中:

  • 包含否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

我想知道我是否应该使用其他一些记录器类,我是否缺少依赖项,或者它可能没有被错误打包。我在文档中找不到有关此更改的任何内容。

1 个答案:

答案 0 :(得分:17)

我几乎开了一张票,因为我在文档herehere中找不到任何内容。但后来我发现这个ticket根据Slf4jEventHandler被删除,因为它已被弃用。我跟进了这个搜索,发现scaladoc有这个弃用消息:“(从2.2版开始)使用akka.event.slf4j.Slf4jLogger)”。

我在application.conf中更新了这一行:

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

到此:

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

这一切都奏效了。

我希望你觉得这个解决方案很有用。