Kotlin-Fehler: org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7 konnte nicht gefunden werden

101

Ich habe das Kotlin-Plugin in meiner App installiert (v. 1.1.1-release-Studio2.2-1) und dann "Kotlin in Projekt konfigurieren" ausgewählt. Ich habe die Compiler- und Laufzeitversion von 1.0.7 ausgewählt. Kotlin hat meine Gradle-Dateien aktualisiert. Wenn ich jetzt versuche einzubauen, bekomme ich:

Fehler: Beim Konfigurieren des Projekts ': app' ist ein Problem aufgetreten. Es konnten nicht alle Abhängigkeiten für die Konfiguration ': app: _debugApkCopy' aufgelöst werden. Org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7 konnte nicht gefunden werden. Benötigt von:

MyApplication: App: nicht angegeben

Ich bin mir nicht sicher, was ich hier vermisse.

Mike6679
quelle
2
gradle
Veröffentlichen Sie
So fügen Sie Kotlin-Unterstützung für Android hinzu: kotlinlang.org/docs/reference/using-gradle.html
IgorGanapolsky

Antworten:

159

ersetzen

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

mit

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

Da die Version mit jre absolut ist, ersetzen und synchronisieren Sie einfach das Projekt

Offizielle Dokumentation hier Danke für den Link @ ROMANARMY

Viel Spaß beim Codieren :)

Leoelstin
quelle
1
Einige hilfreiche Informationen in den Dokumenten zu jdk und jre.
R0MANARMY
Ich glaube, eines Tages wird das Android-Team die Dinge ein wenig einfacher machen, nicht viel, nur ein wenig, oder zumindest werden sie große Änderungen im Changelog fett schreiben, anstatt es tief in die Website zu vergraben, um es abzubauen :))
Farid
11
Ich brauchte eine volle Minute, um den Unterschied zwischen jreund jdkzu erkennen - ich muss alt werden.
James Wang
32

In Projektebene build.gradleVerwendung nur diese Version

ext.kotlin_version = '1.3.31'

Entfernen Sie andere Versionen

Dies funktioniert nur mit der neuesten Version von Android Studio 3.4

UPDATE: Versuchen Sie, die neueste Version von kotlin mit dem neuesten Android Studio zu verwenden, um Fehler zu vermeiden.

Patel Pinkal
quelle
22
Eine Antwort, die eine magische Version angibt, die ohne Erklärung verwendet werden soll, ist nicht allzu hilfreich und wird mit der Zeit noch weniger hilfreich. Schlagen Sie ein Upgrade von einer niedrigeren Version vor? Oder ein Downgrade von einer höheren Version, weil die höhere Version einen Fehler aufweist?
Don Hatch
3
@ DonHatch Diese Antwort wurde im März für Android Studio 2.2 gegeben, das oben in der Frage als Fehler erwähnt wurde. Es ist nicht für Android Studio 3.0 oder höher.
Patel Pinkal
@ 0xalihn Antwort unten hat eine korrekte Lösung ohne magische Versionsnummer
Lou Morda
@PatelPinkal können Sie Ihre Antwort für die neueste Android Studio-Version aktualisieren.
Arbaz.in
1
Ich habe die Antwort gemäß der neuesten Version von Android Studio aktualisiert
Arbaz.in
21

Die Aufteilung kotlin-stdlibin kotlin-stdlib-jre7und kotlin-stdlib-jre8wurde nur mit Kotlin 1.1 eingeführt, deshalb kann die Abhängigkeit nicht aufgelöst werden, die Paketversion existiert einfach nicht.

Es sieht so aus, als ob das Update Ihrer Projektdateien irgendwann fehlgeschlagen ist und die Kotlin-Version auf 1.0.7 gesetzt wurde. Wenn dies ein neues Projekt ist und Sie nichts daran hindert, 1.1.1 zu verwenden, würde ich darauf umsteigen. Ihr Problem sollte danach behoben sein.

skalarproduktraum
quelle
3
Danke für die Erklärung. In mehreren Antworten heißt es, dass 1.1.1 ohne Erklärung verwendet wird, wodurch die Antworten in Zukunft schnell unbrauchbar werden.
Don Hatch
12

Ändern Sie in der Datei "build.gradle" die aktuelle Kotlin-Version in dieser Zeile und drücken Sie "Synchronisieren":

ext.kotlin_version = '1.1.1'

/// Das wird so aussehen:

// Build-Datei der obersten Ebene, in der Sie Konfigurationsoptionen hinzufügen können, die allen Unterprojekten / Modulen gemeinsam sind.

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
    }
}
Mihail Salari
quelle
8

Ab Kotlin 1.1.2 werden die Abhängigkeiten mit der Gruppe org.jetbrains.kotlinstandardmäßig mit der Version aus dem angewendeten Plugin aufgelöst. Sie können die Version manuell unter Verwendung der vollständigen Abhängigkeitsnotation wie folgt bereitstellen:

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

Wenn Sie auf JDK 7 oder JDK 8 abzielen, können Sie erweiterte Versionen der Kotlin-Standardbibliothek verwenden, die zusätzliche Erweiterungsfunktionen für APIs enthalten, die in neuen JDK-Versionen hinzugefügt wurden. Verwenden Sie anstelle von kotlin-stdlib eine der folgenden Abhängigkeiten:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
0xAliHn
quelle
6

Eine neue Lösung, wenn Sie Android Studio 3.2 verwenden. Ich habe dieses Problem gelöst, indem ich mavenCentral () zu build.gradle des Projekts hinzugefügt habe:

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()
    }
}

Sie sollten die Zeile als diese Reihenfolge hinzufügen, die Gutschrift gilt für diese Antwort

Mohamed ElSawaf
quelle
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" }
    }
}
chirag khandla
quelle
Sie könnten näher erläutern, wie dies die Antwort von Mihail Salari verbessert, auf der sie zu beruhen scheint.
Nemo
3

Wenn Sie Android Studio 3.2 oder höher verwenden, wird das Problem durch Hinzufügen von google () & jcenter () zu build.gradle des Projekts behoben:

repositories {
        google()
        jcenter()
}
vikas
quelle
2

Das hat bei mir funktioniert: Verwenden von 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/'
    }
  }
}   
Olusola Omosola
quelle
2

Ich habe dieses Problem durch Deaktivieren der Option Offline-Arbeit in gelöstSettings

Geben Sie hier die Bildbeschreibung ein

andreikashin
quelle
1
  1. Bitte überprüfen Sie die aktuelle Version Ihres Kotlin im folgenden Pfad.

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

Wechseln Sie zu dieser Version (1.0.5)in der Gradle-Datei auf Projektebene.

Sie können in Ihrem obigen Pfad sehen, dass kein Java erwähnt wird - jre versionentfernen Sie also in Ihrer Gradle-Datei auf App-Ebene wie folgt:

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
user8056898
quelle
1

build.gradle (Projekt)

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

gradle / wrapper / gradle-wrapper.properties

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

Einige Bibliotheken benötigen den aktualisierten Gradle . Sowie:

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

GL

Braian Coronel
quelle
0

Falls eine (transitive) Abhängigkeit weiterhin die jreVariante der Kotlin-Bibliothek verwendet, können Sie die Verwendung der jdkVariante mithilfe einer Auflösungsstrategie erzwingen :

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'.")
                }
            }
        }
    }
}
Brian
quelle
0

Einfache Schritte:

  1. Klicken Sie auf Datei> Projektstruktur

  2. Klicken Sie auf Abhängigkeiten> Suchen und klicken Sie auf org.jetbrains.kotlin: kotlin-stdlib-jdk7: 1.3.21 (oder was auch immer Ihre aktuelle Version ist)

  3. Klicken Sie im Abschnitt Details> Aktualisieren auf [Variable aktualisieren] [Abhängigkeiten aktualisieren].

  4. OK klicken

Freundliche Grüße

Azhar Husain Raeisi
quelle
0

Nach dem Reparieren der build.gradle-Version funktionierte es mit 4.0.0 bis 3.5.0

Kevin Kulothungan
quelle