Повторяющийся класс com.google.common.util.concurrent.ListenableFuture обнаружен в модулях guava-20.0.jar (com.google.guava:guava:20.0)

Когда я использую implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' в моем app/build.gradle, я получаю эту ошибку:

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, и тогда она становится избыточной? Спасибо.

121
0
49 077
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Ответ принят как подходящий

Я нашел решение на Как решить, что тип программы уже присутствует: com.google.common.util.concurrent.ListenableFuture?. пользователь 2297550 сказал:

I merely added implementation 'com.google.guava:guava:27.0.1-android' at the end of my app gradle file and the error went away.

Это было решением для меня. Теперь у меня есть это, и мое приложение правильно компилируется:

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

Но что это значит? Мы добавляем некоторые новые зависимости вместо того, чтобы удалять что-то повторяющееся, и ошибка исчезла..!!!

Jaimin Modi 18.02.2020 17:06

@JaiminModi Согласно github.com/google/гуава, «Guava — это набор основных библиотек Java от Google, который включает в себя новые типы коллекций (такие как мультикарта и мультимножество), неизменяемые коллекции, библиотеку графов и утилиты для параллелизма, ввода-вывода, хеширования, кэширования, примитивы, строки и многое другое! Он широко используется в большинстве проектов Java в Google, а также широко используется многими другими компаниями».

Jaime Montoya 18.02.2020 17:10

На данный момент последняя версия implementation 'com.google.guava:guava:28.2-android'github.com/google/guava/релизы.

Joonsoo 29.02.2020 01:18

Есть еще более новый релиз: implementation 'com.google.guava:guava:29.0-jre'

Roar Grønmo 05.06.2020 09:26

Версия 27.0.1 работала у меня после получения сообщения «Не удается получить доступ к классу com.google.common.util.concurrent.ListenableFuture». ошибка с io.ktor:ktor-auth:1.5.2 по какой-либо причине.

rdxdkr 25.03.2021 22:11

Уменьшите дублированные зависимости от вашего проекта

Например, многие зависимости используют 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 в одной копии для всех библиотек, которые их используют.

Первый пример удаляет все включенные модули из библиотек. Если вы хотите удалить несколько модулей из конкретной библиотеки, которые вызывают ошибку, попробуйте второй пример для конкретной библиотеки.

vishwajit76 13.03.2020 07:09

Добавьте эту строку в build.gradle

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

2020 Решение

Google знает об этой ошибке, поэтому они сделали специальный пакет для устранения конфликта.

Добавьте это в свой build.gradle

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

LOL, это должно остаться в проекте навсегда или? Как узнать, когда его можно удалить?

Jørgen Svennevik Notland 01.04.2020 14:43

Это спасло положение.

Denny 07.05.2020 01:25

Ничего себе впечатляющая библиотека от Google

winsontan520 26.05.2020 09:42

@DenisOluka больше похоже на то, что это сделало мой день. ?

Zen3515 28.05.2020 19:43

Однако это будет работать хорошо, если вы не включили mutliDex в своей конфигурации defaultConfig, вы столкнетесь с другой ошибкой «Не удается разместить запрошенные классы в одном файле dex (# методы: 89411 > 65536)». Чтобы решить эту проблему, убедитесь, что вы добавили реализацию 'androidx.multidex:multidex:2.0.1' в ваших зависимостях и установите multiDexEnabled true в android defaultConfig

Jackson 29.05.2020 21:42

Когда вы отправляете быстрое исправление в производство

Farwa 19.06.2020 06:31

Ссылка на трекер проблем? Это единственный способ узнать, когда зависимость может быть удалена.

Pitos 02.10.2020 14:39

отличный! но нужно ли нам удалить это позже в будущем?

RL Shyam 19.10.2020 15:12
9999.0-empty-to-avoid-conflict-with-guava такое многословное имя
All Іѕ Vаиітy 06.12.2020 20:09

Это работает и с другими зависимостями firebase и Admob??. Google только что починил дренажный трубопровод бумажной лентой.??

Aditya Rana 11.05.2021 16:24

Я могу подтвердить эту работу даже в 2022 году спасибо

Vibin 25.01.2022 01:35

Я столкнулся с той же проблемой. Я добавил строку ниже

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'
    

Note: To get the version go to https://mvnrepository.com/artifact/com.google.guava/guava and find for the latest version of 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'
}

Это случилось со мной внезапно сегодня с моим проектом Flutter, произошло после того, как я обновил свои пакеты и версию Flutter.

UnicornsOnLSD 18.10.2020 01:00

Серьезно мужик! Совершенно неожиданные ошибки, подобные этой, портят общий опыт разработки Flutter.

devDeejay 03.06.2021 00:59

добавьте это в свой файл градиента

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

Это сработало для меня. Все еще использую Java для Android. Кажется, не зависит от Котлина.

musterjunk 31.12.2021 16:01

добавьте эти две реализации на уровень вашего приложения 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'

Другие вопросы по теме