Факторов появления рассматриваемой ошибки может быть много. Расскажу о сценарии, в котором ошибка получена, а в конце — об основной причине ее возникновения. Проведенная мной диагностика наверняка пригодится вам в поиске решения.
Цель моего сценария — импортировать библиотеки для Google Calendar Api в файле build.gradle(:app)
. После импорта проект не скомпилировался, появилась необычная ошибка Duplicate Class Found:
![](https://cdn-images-1.medium.com/max/1000/0*PApXoxOUOKb3Hv0c.png)
Вот одно из ее описаний: «В модулях jetified-guava-27.1-android (com.google.guava:guava:27.1-android) и jetified-guava-jdk5–17.0 (com.google.guava:guava-jdk5:17.0) найден дублированный класс com.google.common.xml.XmlEscapers».
То есть имеем проблему с guava и конфликт.
Эта ошибка получается, даже если не импортировать в файле ничего, связанного с guava.
Этапы решения
В файл build.gradle(:app)
добавляем конфигурации:
configurations{
implementation.exclude module:'gauva-jdk5'
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}
В зависимостях — библиотеках, связанных с API календаря, — игнорируем guava. Об этом указано в комментариях:
![](https://cdn-images-1.medium.com/max/1000/0*iBgT1wuL-X0ircA8.png)
Вот версии приложения этого сценария:
minSdkVersion = 23 , targetSdkVersion = 32 , compileSdkVersion = 32.
Процессов выше для устранения ошибки хватило. Если их недостаточно, к уровню приложения можно добавить этот импорт:
implementation 'com.google.guava:guava:26.0-android'
Теперь важный момент. Ресурсов для устранения проблемы было не так много, предлагаемые решения найдены методом проб и ошибок.
Например, одна из рекомендаций — найти проблемную библиотеку, создавая новый проект, импортируя в него все библиотеки по порядку и экспериментируя. Для крупных проектов оцениваются затраты времени и сил.
Судя по отзывам в интернете людей, которые сталкивались с этой ошибкой, она встречается в библиотеках для google-api. Я сократил количество импортов, в которых игнорировалась бы guava, и за короткое время устранил проблему. Но эта не доказанная теория, а лишь предположение, верное в моем случае.
Важный вывод: среди библиотек для google-api игнорировать guava. Так вы наверняка очень быстро придете к решению.
Читайте также:
- Kotlin Android Extensions: полное руководство
- Ответы на распространенные вопросы о подписании приложений в Google Play
- Релиз Koin 1.0.0✨
Читайте нас в Telegram, VK и Дзен
Перевод статьи Enes Koçer: Duplicate Class Found Error In Android For Kotlin