在模块 guava-20.0.jar (com.google.common.util.concur.ListableleFuture)中找到重复的类 com.google.common.util.concurt.ListableFuture (com.google.guava: guava: 20.0)

当我在我的 app/build.gradle中使用 implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'时,我得到这个错误:

Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules guava-20.0.jar (com.google.guava:guava:20.0) and listenablefuture-1.0.jar (com.google.guava:listenablefuture:1.0)


Go to the documentation to learn how to Fix dependency resolution errors.

我的 app/build.gradle里还有这个:

implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.8'
implementation 'com.google.android.gms:play-services-awareness:16.0.0'
implementation 'com.google.android.gms:play-services-cast:16.2.0'
implementation 'com.google.android.gms:play-services-gcm:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-iid:17.1.2'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
implementation 'android.arch.work:work-runtime:1.0.1'
implementation 'com.android.support:multidex:1.0.3'
apply plugin: 'com.google.gms.google-services'

也许我正在使用的一个库已经包含了对 In-App Messaging 依赖性的支持,然后它就变得多余了?谢谢你。

66886 次浏览

我在 如何解决程序类型已经存在的问题: com.google.common.util.conder.ListableFuture?.user2297550上找到了解决方案:

我只是在应用程序分级文件的末尾添加了 implementation 'com.google.guava:guava:27.0.1-android',错误就消失了。

这就是我的解决方案。现在我有了这个,而且我的应用程序编译正确:

implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android'

减少项目中的重复依赖项

例如,许多依赖项使用 support-v4和 appcompat-v7作为包含的包,然后可能是不同的版本,因此您需要从依赖项内部删除这些包并创建一个编译依赖项。

这将删除所有包含的库模块

android {
configurations {
all*.exclude module: 'appcompat-v7'
all*.exclude module: 'support-v4'
}
}

或者你可以设法抛出每个依赖项,以更清楚地删除包,如下所示:

dependencies {
implementation ('com.mapbox.mapboxsdk:mapbox-android-sdk:4.2.0@aar') {//depend on your library
transitive = true
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'recyclerview-v7'
exclude group: 'com.android.support', module: 'design'
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.squareup.retrofit2' module: 'retrofit'
exclude group: 'com.squareup.retrofit2', module: 'retrofit'
exclude group: 'com.google.code.gson', module: 'gson'
exclude module: 'guava'//add this line if you have build error "found in modules guava-xxx-android.jar"
}
}

所有已删除的依赖项必须在一个副本中的 mapbox 之外声明,以便所有库使用它们。

在 build.gradle 中添加这一行

    implementation 'com.google.guava:guava:27.0.1-android'

2020解决方案

谷歌知道这个错误,所以他们制作了一个特殊的软件包来修复这个冲突。

把这个加到你的 build.gradle

implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

我遇到了同样的问题

implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

这工作,但我遇到了另一个问题-Cannot fit requested classes in a single dex file (# methods: 89411 > 65536)要解决这个错误,请确保启用 multiDex,如下所示

defaultConfig {
applicationId "com.techweezy.smartsync"
minSdkVersion 19
targetSdkVersion 29
versionCode 5
versionName "1.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true //added this line
}

然后最后添加以下行。

   implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
implementation 'androidx.multidex:multidex:2.0.1'
  1. 打开 build.gradle文件。

  2. 不要替换! 只需在 dependencies{}中添加这一行:

    implementation 'com.google.guava:guava:<version>-jre'
    

注意: 要获得这个版本,请转到 https://mvnrepository.com/artifact/com.google.guava/guava并查找 jre的最新版本。

我在构建我的 Flutter 项目时偶然发现了这个。不知道为什么它会露出丑陋的脑袋,但我还是来了。

因此,如果任何 Flutter 的开发者遇到这个问题,“ Ray Li 的回答对我很有用。您要编辑的 build.gradle文件是 android/app文件夹中的文件(即。不是 android文件夹中的那个)。

只需将 implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'添加到文件末尾的依赖项部分,如下所示:

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
}

把这个加到你的档案里

configurations {
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

将这两个实现添加到应用级 build.gradle/app/build.gradle

implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android'

我添加了这个,非常适合我。

implementation 'com.google.guava:guava:27.0.1-android'

对我来说,什么都不管用。唯一神奇地修复它的方法就是把去糖库升级到 匹配我的 AGP 版本:

coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.0'