首页 > 解决方案 > 摇篮。说依赖来使用另一个版本的已经包含的依赖

问题描述

例子:

implementation(group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '3.13.0')
implementation(group: 'com.mypack', name: "old-library", version: '1.0')

问题是较新的 selenium 版本中缺少的old-library throws 。java.lang.NoClassDefFoundError: org/openqa/selenium/remote/SessionNotFoundException不幸的是,我无法访问源代码。问题 - 是否可以说只old-library使用旧的硒版本?

标签: gradledependency-managementgradle-dependencies

解决方案


好吧,那是不可能的。正如我从 Gradle Slack 聊天中得到的:

比没有依赖包重定位没有办法解决

实际上,在这种情况下,甚至在类路径级别上都没有问题,因为如果 2 个依赖项具有相同的 id,则 Gradle 必须选择其中之一。如果仅更改依赖项 ID,则运行时会出现问题,因为具有许多冲突类的 2 个依赖项将位于同一类路径上。它对 Java 有效,但是在类路径解析中选择哪个版本取决于类加载器,你不能依赖它


推荐阅读