kon*_*tor 7 scala slf4j sbt playframework
我的游戏项目中有第三方依赖.该第三方库对slf4j实现具有最终依赖性(非直接).
我收到了slf4j的重复绑定错误.
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]
Run Code Online (Sandbox Code Playgroud)
我尝试了一些事情,但可以摆脱错误.
"com.orgname.platform" % "platform-metric-client" % "1.0.4" excludeAll(
ExclusionRule(organization = "org.slf4j"))
Run Code Online (Sandbox Code Playgroud)
我也试过以下排除
"com.orgname.platform" % "platform-metric-client" % "1.0.4" exclude("org.slf4j","slf4j-jdk14)
Run Code Online (Sandbox Code Playgroud)
还有这一个
"com.orgname.platform" % "platform-metric-client" % "1.0.4" exclude("org.slf4j","slf4j-log4j12)
Run Code Online (Sandbox Code Playgroud)
由于我无法从第三方依赖项中删除slf4j,所以厌倦了删除对slf4j的播放依赖,通过修改projcts/plugin.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6" exclude("org.slf4j", "slf4j-simple"))
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能摆脱这个警告.这个警告如何影响日志记录?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"
)
Run Code Online (Sandbox Code Playgroud)
编辑:
我建议花一些时间并了解传递依赖和范围管理。它将为您节省时间。Maven上有一个很棒而直接的文档页面:https : //maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
PS。排除?提供?
恕我直言,无论except或exceptAll,它仅从该库中排除 slf4j 依赖项,而不从整个项目中排除 slf4j 依赖项。因此,所有可能间接依赖于 slf4j 的库依赖行都需要添加exclude("org.slf4j","slf4j-log4j12).
一个快速但肮脏的解决方案是附加exclude("org.slf4j","slf4j-log4j12)到每个libraryDepcies 行。我尝试过这个,它对我有用。