Ошибка Kotlin: не удалось найти org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7

102

Я установил плагин Kotlin в свое приложение (v. V1.1.1-release-Studio2.2-1), а затем выбрал «Настроить Kotlin в проекте». Я выбрал компилятор и версию среды выполнения 1.0.7. Котлин обновил мои файлы Gradle. Теперь, когда я пытаюсь встроить, я получаю:

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

Мое приложение: приложение: не указано

Я не уверен, что мне здесь не хватает.

Майк6679
источник
2
gradle
Опубликуйте
Вот как вы добавляете поддержку Kotlin для Android: kotlinlang.org/docs/reference/using-gradle.html
Игорь Ганапольский

Ответы:

161

заменить

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 сделает все немного проще, не намного, или, по крайней мере, они напишут основные изменения в журнале изменений жирным шрифтом вместо того, чтобы закапывать их глубоко в веб-сайт для извлечения :))
Фарид
12
Мне потребовалась целая минута, чтобы увидеть разницу между jreи - я, jdkдолжно быть, старею.
Джеймс Ван
32

На уровне проекта build.gradleиспользуйте только эту версию

ext.kotlin_version = '1.3.31'

Удалить другие версии

Это будет работать только с последней версией Android Studio 3.4.

ОБНОВЛЕНИЕ: попробуйте использовать последнюю версию kotlin с последней версией Android Studio, чтобы избежать ошибки.

Патель Пинкал
источник
22
Ответ, в котором указывается волшебная версия для использования без объяснения причин, не так уж и полезен и со временем становится еще менее полезным. Вы предлагаете обновление с более ранней версии? Или откатиться с более поздней версии из-за ошибки в более поздней версии?
Дон Хэтч
3
@DonHatch этот ответ был дан в марте для студии Android 2.2, в которой упоминалась ошибка, указанная выше в вопросе. Это не для Android Studio 3.0 или выше.
Патель Пинкал
@ 0xalihn ответ ниже имеет правильное решение без магического номера версии
Лу Морда
@PatelPinkal, вы можете обновить свой ответ для последней версии студии Android.
Arbaz.in 07
1
Я обновил ответ в соответствии с последней версией Android studio
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 в этой строке и нажмите synk:

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, вы можете использовать расширенные версии стандартной библиотеки Kotlin, которые содержат дополнительные функции расширения для API, добавленных в новых версиях JDK. Вместо kotlin-stdlib используйте одну из следующих зависимостей:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
0xAliHn
источник
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" }
    }
}
Чираг Кхандла
источник
Вы могли бы уточнить, как это улучшает ответ Михаила Салари, на котором он, кажется, основан.
Nemo
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/'
    }
  }
}   
Олусола Омосола
источник
2

Я решил эту проблему, сняв выделение с параметра Автономная работа вSettings

введите описание изображения здесь

андрейкашин
источник
1
  1. Пожалуйста, проверьте текущую версию вашего Kotlin по пути ниже,

    C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ org \ jetbrains \ kotlin \ kotlin-stdlib \ 1.0.5

изменить на эту версию (1.0.5)в файле градиента уровня проекта.

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

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
user8056898
источник
1

build.gradle (Проект)

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

градиент / оболочка / gradle-wrapper.properties

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

Некоторым библиотекам требуется обновленный gradle . Такие как:

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

GL

Брайан Коронел
источник
0

Если (транзитивная) зависимость по-прежнему использует jreвариант библиотеки Kotlin, вы можете принудительно использовать 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. Нажмите ОК

Наилучшие пожелания

Азхар Хусейн Раэиси
источник
0

После исправления версии build.gradle он начал работать с 4.0.0 по 3.5.0

Кевин Кулотунган
источник