我有一个有效的akka-http
应用程序。现在我尝试通过slf4j和logback添加日志记录,我的应用程序崩溃了。
build.sbt
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % "10.0.7",
"ch.qos.logback" % "logback-classic" % "1.2.3",
"com.typesafe.akka" %% "akka-slf4j" % "2.5.2"
)
application.conf
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
错误:
检测到java.lang.NoSuchMethodError错误,可能由以下原因引起 类路径上不兼容的Akka版本。请注意一个给定的 Akka版本必须与Akka的所有模块相同 使用,例如如果你使用akka-actor [2.5.2(从当前解析 classpath)]所有其他核心Akka模块必须是相同的版本。 外部项目,如Alpakka,Persistence插件或Akka HTTP等。 有自己的版本号 - 请确保您使用的是 兼容的图书馆。
来自的未捕获错误 thread [my-system-akka.actor.default-dispatcher-6]关闭JVM 因为&#39; akka.jvm-exit-on-fatal-error&#39;已启用 ActorSystem [my-system] java.lang.NoSuchMethodError: akka.actor.ActorCell.addFunctionRef(Lscala /功能2)拉卡/演员/ FunctionRef;
根据消息,这是一个兼容性问题。如何找出哪些版本的akka-http
和akka-slf4j
兼容(尝试除外)?
在旁注中,由于它是一个类似的问题:我想添加akka-stream
。但是,使用最新版本的akka-http
和akka-stream
会在sbt中给出驱逐警告。与上述相同的问题:如何找出要使用的版本?
答案 0 :(得分:2)
不幸的是,akka-http
与akka
的其他版本分开版本,其最新版本不一定使用akka
的最新版本。如果是akka-http
版本10.0.7
,则兼容的akka
版本为2.4.18
。你可以看到它here。这意味着您需要在akka-slf4j
依赖项中删除该版本以无问题地运行应用程序。