我的游戏项目中有第三方依赖项。该第三方库最终依赖(不是直接) slf4j 实现。

我收到slf4j的重复绑定(bind)错误。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:~/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/~/.ivy2/cache/com.orgname.platform/platform-logging-client/jars/platform-logging-client-2.5.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

我尝试了以下事情,但可以摆脱错误。
"com.orgname.platform" % "platform-metric-client" % "1.0.4" excludeAll(
    ExclusionRule(organization = "org.slf4j"))

我也尝试过以下排除
"com.orgname.platform" % "platform-metric-client" % "1.0.4" exclude("org.slf4j","slf4j-jdk14)

还有这个
 "com.orgname.platform" % "platform-metric-client" % "1.0.4" exclude("org.slf4j","slf4j-log4j12)

由于我无法从第三方依赖中删除 slf4j,我厌倦了通过修改 projcts/plugin.sbt 来删除对 slf4j 的 Play 依赖
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6" exclude("org.slf4j", "slf4j-simple"))

我应该如何摆脱这个警告。此警告如何影响日志记录? Scala 实现将使用哪种日志记录实现?

最佳答案

YourBestBet 的答案是正确的,但是您可以通过将导入序列与排除项进行映射来为自己节省一些复制粘贴。

//dependencies with exclusions
libraryDependencies ++= Seq(
    //depencies
).map(_.exclude("org.slf4j", "*"))

//insert one without exclusion
libraryDependencies ++= Seq(
  "ch.qos.logback" % "logback-classic" % "1.1.3"
)

编辑:

我建议花一些时间来理解传递依赖和范围管理。它将为您节省 future 的时间。 Maven 有一个关于它的伟大而直接的文档页面:
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

PS。排除?假如?

关于scala - sbt 排除 slf4j 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36232077/

10-13 01:48