Как устранить ошибку «Не удалось разрешить: org.jetbrains.kotlin: kotlin-stdlib-jre7 ...» при сборке в Android Studio - PullRequest
0 голосов
/ 23 ноября 2018

Я создал новый проект, установив флажок «include kotlin» в Android Studio 3, и из коробки я получаю сообщение об ошибке при компиляции

"Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7..."

Я убедился, что все плагины работаюти что Android SDK установлен правильно.

Кто-нибудь знает, как решить эту ошибку?

Ответы [ 4 ]

0 голосов
/ 04 апреля 2019

Удалите эту строку из build.gradle:

implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

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

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

Обновите версию build.gradle на уровне проекта: kotlinверсия = '1.3.0'

0 голосов
/ 11 июля 2019

В build.gradle ( Модуль: приложение ) замените

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

на

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

и в build.gradle ( Модуль: проект ) изменить версию на

ext.kotlin_version = '1.3.0'
0 голосов
/ 23 ноября 2018

kotlin-stdlib-jre[7/8] устарела некоторое время назад и с тех пор была удалена.Примечание об устаревании сохранялось до 1.2.71 , который был последней версией, выпустившей эти артефакты.Официальное уведомление об устаревании можно найти здесь .Использование любой из устаревших версий (до ее удаления) также должно вызывать предупреждение (по крайней мере) в Android Studio и IntelliJ.

Используйте взамен kotlin-stdlib-jdk7.Это та же зависимость, что и kotlin-stdlib-jre7 (кроме более новой), но она была переименована в kotlin-stdlib-jdk.kotlin-stdlib-jre больше не поддерживается как отдельная зависимость.

В настоящее время IntelliJ и Android Studio генерируют новые проекты с использованием kotlin-stdlib-jre7; это скорее всего ошибка .Вероятно, они не обновили генераторы проекта.Поэтому вы должны вручную заменить зависимости рабочими, пока они не исправят это.Это зависит от плагина Kotlin.Обновите его, если вы этого не сделали. Я не проверял, был ли он исправлен или нет - если он есть, это только исправляет создание новых проектов.Для обновления с более старых версий остальная часть ответа по-прежнему применяется

Естественно, вы должны сделать это, если вы используете 1.2.71 или ниже, и вы обновляетесь до 1.3.0 или выше.

Это новые действительные зависимости от Kotlin 1.3.0:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

Где $kotlinVersion - это либо переменная, содержащая версию, либо жестко закодированная версия (т.е. 1.3.0)


В качестве альтернативы, вы можете использовать "обычный" stdlib (kotlin-stdlib) вместо специфичных для JDK версий.Но вы должны изменить свою зависимость в любом случае, поэтому я рекомендую вам использовать kotlin-stdlib-jdk7, или, если вы планируете использовать Java 8, kotlin-stdlib-jdk8

Можно также найти самые новые версии зависимостей здесь .jdk7, jdk8 и stdlib, не зависящие от версии, следуют одним и тем же версиям (в соответствии с этим редактированием - это может измениться в будущем, но, скорее всего, будут уведомления до того, как произойдут эти изменения), так что, если вы проверите jdk8, jdk7 илиобычная, все версии должны быть универсально доступны для всех артефактов stdlib.

Примечание для других систем сборки

То же самое реальное решение применимо и к другим системам сборки, но код другой.Поскольку существует множество систем сборки, я не собираюсь включать все из них, но дело в том, чтобы изменить артефакт с kotlin-stdlib-jre[num] на kotlin-stdlib-jdk[num] (без скобок, конечно).Или, как упоминалось ранее, kotlin-stdlib.

Независимо от системы сборки, он основывается на доступе к Maven Central и аналогичным репозиториям.Если ваша система сборки не поддерживает это и / или нарушает соглашения и репозитории в стиле Maven, вам нужно будет найти, что работает для вашей системы сборки.

TL; DR:

Вместо этого используйте org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version или org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version (в зависимости от того, какую версию вы изначально использовали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...