118 votes

Classe en double com.google.common.util.concurrent.ListenableFuture trouvée dans les modules guava-20.0.jar (com.google.guava:guava:20.0)

Lorsque j'utilise implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' dans mon app/build.gradle , j'obtiens cette erreur :

 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.

Ce que j'ai aussi dans mon app/build.gradle est ceci :

 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'

Peut-être que l'une des bibliothèques que j'utilise inclut déjà la prise en charge de la dépendance de messagerie intégrée, puis elle devient redondante ? Merci.

305voto

Ray Li Points 658

Solutions 2020

Google connaît cette erreur et a donc créé un package spécial pour résoudre le conflit.

Ajoutez ceci à votre build.gradle

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

26voto

Tarique Naseem Points 733

Je viens de découvrir cela lors de la construction de mon projet Flutter. Je ne sais pas trop pourquoi il a dressé sa tête laide, mais je suis là.

Donc, si des développeurs de Flutter rencontrent cela, la réponse de @Ray Li a fonctionné pour moi. Le build.gradle que vous souhaitez modifier est celui du android/app (c'est-à-dire PAS celui du android ).

Ajoutez simplement le implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' à la section des dépendances à la fin du fichier, comme suit :

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

14voto

Prabhu Points 188

Ajoutez cette ligne dans build.gradle

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

8voto

Jackson Points 165

J'ai rencontré le même problème. J'ai ajouté la ligne ci-dessous

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

Cela fonctionne mais j'ai rencontré un autre problème Cannot fit requested classes in a single dex file (# methods: 89411 > 65536) Pour résoudre cette erreur, assurez-vous d'activer multiDex comme ci-dessous

 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
}

Ensuite, ajoutez enfin les lignes ci-dessous.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X