java.lang.NoClassDefFoundError:org / slf4j / impl / StaticLoggerBinder SBT Scala

时间:2018-07-16 22:05:10

标签: java scala logging playframework sbt

我有 build.sbt 文件:

name := """test"""

version := "1.0-SNAPSHOT"

scalaVersion := "2.12.6"

val loggingDependencies = Seq(
"com.typesafe.scala-logging" %% "scala-logging" % "3.+",
"ch.qos.logback" % "logback-classic" % "1.2.3",
"ch.qos.logback" % "logback-core" % "1.+"
)

libraryDependencies ++= Seq(
...
"org.slf4j" % "slf4j-api" % "1.8.0-beta1",
"org.slf4j" % "slf4j-simple" % "1.8.0-beta1",
)

添加这种依赖性之后

lazy val root = (project in file(".")).enablePlugins(PlayScala)

我遇到错误

java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

所有建议根本没有帮助!它出什么问题了!

1 个答案:

答案 0 :(得分:1)

这些版本不兼容,请参见https://www.slf4j.org/faq.html#changesInVersion18https://logback.qos.ch/news.html。如果要使用Logback 1.2.3,则需要SLF4J 1.7.x;如果要使用不稳定的SLF4J 1.8,则需要(也是不稳定的)Logback 1.3.x。

"ch.qos.logback" % "logback-classic" % "1.2.3",
"ch.qos.logback" % "logback-core" % "1.+"

logback-classiclogback-core具有不同的版本对我来说也没有意义。

最后的问题是slf4j-simplelogback都具有依赖性。

编辑:播放uses Logback on its own if not disabled explicitly,因此它已经具有一些Logback和SLF4J版本相关性,并且您使用不兼容的版本覆盖了SLF4J(并添加了slf4j-simple,该版本不能与重新登录)。如果要覆盖Play的功能,请删除依赖项或遵循链接的文档。