kotlin-stdlib-jre[7/8]wurde vor einiger Zeit veraltet und wurde seitdem entfernt. Der Verfallsschein wurde bis zum 1.2.71 aufbewahrt. Dies war die letzte Version, in der diese Artefakte veröffentlicht wurden. Die offizielle Abschreibungsmitteilung finden Sie hier . Die Verwendung einer der veralteten Versionen (bevor sie entfernt wurde) sollte auch in (mindestens) Android Studio und IntelliJ eine Warnung erzeugen.
Verwenden Sie kotlin-stdlib-jdk7stattdessen. Es ist die gleiche Abhängigkeit wie kotlin-stdlib-jre7(außer neueren), aber es wurde umbenannt in kotlin-stdlib-jdk. kotlin-stdlib-jrewird jetzt nicht mehr als separate Abhängigkeit gepflegt.
Sowohl IntelliJ als auch Android Studio generieren derzeit neue Projekte mit kotlin-stdlib-jre7; Dies ist wahrscheinlich ein Fehler . Sie haben die Projektgeneratoren wahrscheinlich nicht aktualisiert. Daher müssen Sie die Abhängigkeiten manuell durch funktionierende ersetzen, bis sie dies beheben. Dies hängt vom Kotlin-Plugin ab. Aktualisieren Sie es, wenn Sie es nicht getan haben. Ich habe nicht überprüft, ob es gepatcht wurde oder nicht - wenn ja, wird dadurch nur die Erstellung neuer Projekte behoben. Für die Aktualisierung von älteren Versionen gilt der Rest der Antwort weiterhin
Sie müssen dies natürlich tun, wenn Sie 1.2.71 oder niedriger verwenden und ein Upgrade auf 1.3.0 oder höher durchführen.
Dies sind die neuen gültigen Abhängigkeiten ab Kotlin 1.3.0:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
Wo $kotlinVersionist entweder eine Variable, die die Version enthält, oder eine fest codierte Version (dh 1.3.0)
Alternativ können Sie anstelle der JDK-spezifischen Versionen die "plain" stdlib ( kotlin-stdlib) verwenden. Sie müssen Ihre Abhängigkeit jedoch in beide Richtungen ändern. Ich empfehle Ihnen daher, kotlin-stdlib-jdk7Java 8 zu verwenden , oder wenn Sie Java 8 verwenden möchten.kotlin-stdlib-jdk8
Die neuesten Versionen der Abhängigkeiten finden Sie auch hier . jdk7, jdk8 und die version-unspezifische stdlib folgen alle denselben Versionen (gemäß dieser Bearbeitung - dies könnte sich in Zukunft ändern, aber es wird wahrscheinlich Hinweise geben, bevor diese Änderung erfolgt). Ob Sie also jdk8, jdk7 oder die überprüfen In der regulären Version sollten alle Versionen für alle stdlib-Artefakte universell verfügbar sein.
Hinweis für andere Build-Systeme
Die gleiche tatsächliche Lösung gilt auch für andere Build-Systeme, der Code ist jedoch unterschiedlich. Da es viele Build-Systeme gibt, werde ich nicht alle einbeziehen, aber es geht darum, das Artefakt von auf kotlin-stdlib-jre[num]zu ändern kotlin-stdlib-jdk[num](natürlich ohne Klammern). Oder, wie bereits erwähnt , kotlin-stdlib.
Unabhängig vom Build-System basiert dies auf dem Zugriff auf Maven Central und ähnliche Repositorys. Wenn Ihr Build-System dies nicht unterstützt und / oder gegen Konventionen und Repositorys im Maven-Stil verstößt, müssen Sie herausfinden, was für Ihr Build-System funktioniert.
TL; DR:
Verwenden Sie stattdessen org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_versionoder org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version(abhängig von der ursprünglich verwendeten Version).