Як виправити помилку "Не вдалося вирішити: org.jetbrains.kotlin: kotlin-stdlib-jre7…" під час створення в Android Studio


78

Я створив новий проект, встановивши прапорець "включити kotlin" в Android Studio 3, і не з'являється повідомлення про помилку під час компіляції

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

Я переконався, що всі плагіни оновлені та що Android SDK встановлено належним чином.

Як я можу вирішити цю помилку?


1
Привіт @Google, ласкаво просимо до StackOverflow , ти можеш поглянути на "як запитати", щоб покращити це та майбутні запитання. Спеціально ви повинні надати деякі "дослідницькі зусилля" та / або якийсь код, щоб довести, що ви вже намагалися вирішити проблему самостійно.
Луїс Мігель Мехія Суарес

@ LuisMiguelMejíaSuárez Дякую, я подивлюсь, "як запитати", і зроблю інший
Google

Відповіді:


162

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(залежно від того, яку версію ви спочатку використовували).


3
почекайте, де ви змінили цей рядок коду або навіть додали його?
Джонатан

2
@jonney build.gradleдля модуля. Якщо ви використовуєте іншу систему складання, вам потрібно буде знайти відповідний код для цієї системи. Справа змінюється kotlin-stdlib-jre7на kotlin-stdlib-jdk7(або 8), де вона використовується на додаток до збиття версії.
Зої

2
Класно, дякую, я виправив це, додавши його до частини залежностей gradle
Джонатан

36

Видаліть цей рядок із 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 version = '1.3.0'


7

У 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'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.