Помилка Котліна: Не вдалося знайти org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7


101

Я встановив плагін Kotlin у свій додаток (v. V1.1.1-release-Studio2.2-1), а потім вибрав "Налаштувати Kotlin у проекті", я вибрав компілятор та версію виконання 1.0.7. Kotlin оновив мої файли Gradle. Тепер, коли я намагаюся вбудувати, я отримую:

Помилка: виникла проблема при налаштуванні проекту ': app'. Не вдалося вирішити всі залежності для конфігурації ': app: _debugApkCopy'. Не вдалося знайти org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7. Потрібно:

MyApplication: додаток: не вказано

Я не впевнений, чого мені тут не вистачає.


2
Опублікуйте рівень проектуgradle
Patel Pinkal

Ось як ви додали підтримку Kotlin для Android: kotlinlang.org/docs/reference/using-gradle.html
IgorGanapolsky

Відповіді:


160

замінити

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

з

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

Оскільки версія з jre абсолютна, просто замініть та синхронізуйте проект

Офіційна документація тут Дякуємо за посилання @ ROMANARMY

Щасливе кодування :)


1
Деякі корисні відомості в документах про jdk та jre.
R0MANARMY

Я вірю, що одного разу команда Android полегшить ситуацію не набагато просто трохи, або, принаймні, вони напишуть основні зміни в журналі змін сміливим шрифтом, замість того, щоб закопувати його вглиб веб-сайту, який потрібно видобути :))
Farid

12
Мені знадобилася ціла хвилина погляду, щоб побачити різницю між jreі - jdkя повинен старіти.
Джеймс Ван

32

На рівні проекту build.gradleвикористовуйте лише цю версію

ext.kotlin_version = '1.3.31'

Видаліть інші версії

Це буде працювати лише з останньою версією андроїд-студії 3.4

ОНОВЛЕННЯ: Спробуйте використовувати останню версію kotlin з останньою студією Android, щоб уникнути помилок.


22
Відповідь, яка визначає магічну версію, яку слід використовувати без пояснень, не є все корисною та стає ще менш корисною з часом. Ви пропонуєте оновити до нижчої версії? Або пониження версії з більш високої версії, оскільки у вищій версії є помилка?
Дон Хетч

3
@DonHatch Ця відповідь була надана в березні для андроїд-студії 2.2, яка отримувала згадку про помилки вище в питанні. Це не для андроїд-студії 3.0 або вище.
Patel Pinkal

@ 0xalihn відповідь нижче має правильне рішення без магічного номера версії
Лу Морда,

@PatelPinkal Ви можете оновити свою відповідь на останню версію андроїд-студії.
Arbaz.in

1
я оновив відповідь на останню версію Android-студії
Arbaz.in

21

Розкол kotlin-stdlibна kotlin-stdlib-jre7і kotlin-stdlib-jre8був введений лише з Kotlin 1.1, тому залежність неможливо вирішити, версія пакету просто не існує.

Схоже, в якийсь момент оновлення файлів вашого проекту не вдалося встановити версію Kotlin на 1.0.7. Якщо це новий проект і нічого не стримує використання 1.1.1, я б перейшов до цього. Ваша проблема повинна піти після цього.


3
Дякую за пояснення. Кілька відповідей говорять про використання 1.1.1 без пояснень, що зробить відповіді швидко непридатними в майбутньому.
Дон Хетч

12

У файлі "build.gradle" змініть поточну версію Kotlin цього рядка та натисніть sync:

ext.kotlin_version = '1.1.1'

/// Це виглядатиме так:

// Файл збірки верхнього рівня, куди можна додати параметри конфігурації, спільні для всіх підпроектів / модулів.

buildscript {
    ext.kotlin_version = '1.1.1'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

8

Починаючи з Kotlin 1.1.2, залежності з групою org.jetbrains.kotlinза замовчуванням вирішуються у версії, взятої із застосованого плагіна. Ви можете надати версію вручну, використовуючи повне позначення залежності:

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

Якщо ви орієнтовані на JDK 7 або JDK 8, ви можете використовувати розширені версії стандартної бібліотеки Котліна, які містять додаткові функції розширення для API, доданих у нових версіях JDK. Замість kotlin-stdlib використовуйте одну з таких залежностей:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

7

Нове рішення, якщо ви використовуєте Android Studio 3.2, я вирішив цю проблему, додавши mavenCentral () для build.gradle проекту:

buildscript {
    ext.kotlin_version = '1.3.0'
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
}

Ви повинні додати рядок у цьому порядку, зарахований до цієї відповіді


4
buildscript {
    **ext.kotlin_version = '1.1.1'**  //Add this line
    repositories {
        **jcenter()**                 //Add this line
        google()
    }
    dependencies {
//        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        **jcenter()**                 //Add this line
        google()
        maven { url "https://jitpack.io" }
    }
}

Ви могли б детальніше пояснити, як це покращує відповідь Михайла Саларі, на якій, здається, ґрунтується.
Немо

3

Якщо ви використовуєте Android Studio 3.2 і новіших версій, тоді проблему вирішуватимуть додавання google () та jcenter () для build.gradle проекту:

repositories {
        google()
        jcenter()
}

2

Це для мене працювало: Використання Gradle 4.8.1

buildscript {
    ext.kotlin_version = '1.1.1' 
repositories {
    jcenter()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.0'}
}
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    maven {
            url 'https://dl.bintray.com/kotlin/kotlin-dev/'
    }
  }
}   


1
  1. Будь ласка, перевірте поточну версію вашого Kotlin нижче шляху,

    C: \ Програмні файли \ Android \ Android Studio \ gradle \ m2repository \ org \ jetbrains \ kotlin \ kotlin-stdlib \ 1.0.5

змінити на цю версію (1.0.5)у файлі gradle рівня проекту.

Ви можете бачити, що у вищевказаному шляху не згадується жодна Java - jre version, тому видаліть у файлі gradle рівня програми, як показано нижче,

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

1

build.gradle (проект)

buildScript {
    ...
    dependencies {
        ...
        classpath 'com.android.tools.build:gradle:4.0.0-rc01'
    }
} 

gradle / обгортка / gradle-wrapper.properties

...
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

Деякі бібліотеки потребують оновленого градуса . Як от:

androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines"

ГЛ


0

Якщо (транзитивна) залежність все ще використовує jreваріант бібліотеки Котліна, ви можете змусити використовувати jdkваріант за допомогою стратегії вирішення:

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            details.requested.with {
                if (group == "org.jetbrains.kotlin" && name.startsWith("kotlin-stdlib-jre")) {
                    details.useTarget(group: group, name: name.replace("jre", "jdk"), version: version)
                    details.because("Force use of 'kotlin-stdlib-jdk' in favor of deprecated 'kotlin-stdlib-jre'.")
                }
            }
        }
    }
}

0

Прості кроки:

  1. Клацніть Файл> Структура проекту

  2. Клацніть Залежності> Знайти та натиснути org.jetbrains.kotlin: kotlin-stdlib-jdk7: 1.3.21 (або будь-яка ваша поточна версія)

  3. У розділі Деталі> розділ оновлення натисніть [оновлення змінної] [оновлення залежностей]

  4. Клацніть Гаразд

З найкращими побажаннями


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