首页 > 解决方案 > java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder SBT Scala

问题描述

我有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

所有的建议都没有帮助!它出什么问题了!

标签: javascalaloggingplayframeworksbt

解决方案


这些版本不兼容,请参阅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-classic来说logback-core也没有意义。

最后一个问题是两者都有slf4j-simple依赖logback关系。

编辑:如果没有明确禁用,Play 会自行使用 Logback,因此它已经有一些 Logback 和 SLF4J 版本的依赖项,并且您使用不兼容的版本覆盖 SLF4J(并添加slf4j-simple不能与 Logback 一起使用的版本)。如果您想覆盖 Play 所做的事情,请删除您的依赖项或遵循链接的文档。


推荐阅读