首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取sbt依赖树

读取sbt依赖树
EN

Stack Overflow用户
提问于 2018-02-15 09:53:21
回答 1查看 915关注 0票数 1

我正在升级一个剧本中的一些库!项目。在这个过程中,我试图像这样解决错误:java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLoggingFilter

我假设它来自不兼容的传递依赖关系?

但我正在努力有效地使用sbt-dependency-graph来帮助我追踪这个问题。

代码语言:javascript
复制
[info]   +-ch.qos.logback:logback-classic:1.1.3
[info]   | +-ch.qos.logback:logback-core:1.1.3
[info]   | +-org.slf4j:slf4j-api:1.7.21
[info]   | +-org.slf4j:slf4j-api:1.7.7 (evicted by: 1.7.21)

为什么列出了两个版本的slf4j-api

我假设,较新的版本(1.7.21)优先于1.7.7,但是,为什么在某些情况下,我看到同一依赖项的5个不同版本(除了1个被驱逐):

代码语言:javascript
复制
  | | | | +-org.slf4j:slf4j-ext:1.7.12
  | | | |   +-ch.qos.cal10n:cal10n-api:0.8.1
  | | | |   +-org.slf4j:slf4j-api:1.6.2 (evicted by: 1.7.21)
  | | | |   +-org.slf4j:slf4j-api:1.6.4 (evicted by: 1.7.21)
  | | | |   +-org.slf4j:slf4j-api:1.7.12 (evicted by: 1.7.21)
  | | | |   +-org.slf4j:slf4j-api:1.7.2 (evicted by: 1.7.21)
  | | | |   +-org.slf4j:slf4j-api:1.7.21

一旦发现冲突--我是否需要升级所有依赖项以使用相同的版本?

有没有其他我应该采取的方法?

EN

回答 1

Stack Overflow用户

发布于 2018-02-16 08:14:31

发现了"the SLF4J API is backward compatible for all versions"。尽管从slf4j调用了java.lang.ClassNotFoundException。所以再深入一点:

Akka友好地提供了binary compatibility rules,它显示了主要版本之间的向后兼容性被违反。

查看依赖关系树,我们看到了akka依赖关系的不同主要版本(2.3.x和2.4.x):com.typesafe.akka:akka-actor_2.11:2.3.13 (evicted by: 2.4.11)com.typesafe.akka:akka-slf4j_2.11:2.3.13

围绕一个主要版本标准化所有的akka依赖项修复了这个问题:

我们最初的依赖只提供了"com.typesafe.akka" %% "akka-actor" % "2.4.11",而play则传递地提供了"akka-slf4j" % "2.3.13",这破坏了二进制兼容性。

代码语言:javascript
复制
+-com.typesafe.akka:akka-slf4j_2.11:2.3.13 [S]
| +-com.typesafe.akka:akka-actor_2.11:2.3.13 (evicted by: 2.4.11)

akka-slf4jakka-actor提供相同的主版本解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48798986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档