【发布时间】:2021-11-21 05:40:56
【问题描述】:
问题:
我在 Scala sbt 项目中有 2 个依赖项 - org.slf4j:slf4j-api(直接,但也用于其他直接依赖项)和 org.fusesource.hawtjni:hawtjni-generator(传递)。他们都有org.slf4j.helpers.MessageFormatter这个类。当第三个依赖项尝试调用 MessageFormatter.someFunction(x)(应该从 slf4j-api 调用,而不是从 hawtjni-generator 调用)时,就会出现问题。
我尝试过的:
- 清理 IDE (Intellij) 文件,因为我认为这可能是 IDE 无法正确识别它们。没用...
- 将
hawtjni-generator的排除规则添加到所有其他依赖项,使用它的依赖项除外。没用...
编辑: 项目的简化依赖树如下所示:
[info] +-org.slf4j:slf4j-api:1.7.25
[info] +-ch.qos.logback:logback-classic:1.2.3
[info] | +-org.slf4j:slf4j-api:1.7.25
[info] |
[info] +-com.ltonetwork:leveldbjni.leveldbjni-osx:99-master-SNAPSHOT
[info] | +-org.fusesource.hawtjni:hawtjni-maven-plugin:1.18
[info] | +-org.fusesource.hawtjni:hawtjni-generator:1.18
问题在于logback-classic(这是第三个依赖项)错误地调用了hawtjni-generator,而不是slf4j-api。
【问题讨论】:
-
你可能需要遮蔽 hawtjni 的 slf4j 依赖。
-
@LuisMiguelMejíaSuárez 感谢您的回复,我已尝试:
ShadeRule.rename("org.slf4j.**" -> "shadedslf4j.@1").inLibrary("org.fusesource.hawtjni" % "hawtjni-generator" % "1.18").inProject但没有帮助。我相信在 hawtjni 有 slf4j 作为它自己的依赖的情况下,阴影是 hawtjni 自己的包被命名为 org.slf4j。
标签: scala dependencies sbt slf4j