web-dev-qa-db-fra.com

Comment résoudre l'erreur "Impossible de résoudre: org.jetbrains.kotlin: kotlin-stdlib-jre7 ..." lors de la compilation dans Android Studio

J'ai créé un nouveau projet en cochant la case "inclure la kotlin" dans Android Studio 3 et une erreur est survenue lors de la compilation.

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

Je me suis assuré que tous les plugins sont à jour et que le SDK Android est correctement installé.

Quelqu'un saurait-il comment résoudre cette erreur?

49
Google

_kotlin-stdlib-jre[7/8]_ est obsolète depuis un moment et a depuis été supprimé. La note de dépréciation a été conservée jusqu'au 1.2.71 , dernière version à avoir publié ces artefacts. L'avis de dépréciation officiel peut être trouvé ici . L'utilisation de l'une des versions obsolètes (avant sa suppression) devrait également générer un avertissement dans (au moins) Android Studio et IntelliJ.

Utilisez kotlin-stdlib-jdk7 à la place. Il en va de même que _kotlin-stdlib-jre7_ (sauf le plus récent), mais il a été renommé en _kotlin-stdlib-jdk_. _kotlin-stdlib-jre_ n'est plus maintenu en tant que dépendance séparée.

IntelliJ et Android Studio génèrent actuellement de nouveaux projets à l'aide de _kotlin-stdlib-jre7_; c'est probablement un bogue . Ils n'ont probablement pas mis à jour les générateurs de projet. Par conséquent, vous devez remplacer manuellement les dépendances par celles qui fonctionnent jusqu'à ce qu'elles résolvent ce problème. Cela dépend du plugin Kotlin. Mettez à jour si vous ne l'avez pas. Je n'ai pas vérifié s'il a été corrigé ou non. Si c'est le cas, cela ne résout que la création de nouveaux projets. Pour la mise à jour à partir d'anciennes versions, le reste de la réponse s'applique toujours.

Vous devez naturellement le faire si vous utilisez la version 1.2.71 ou inférieure et que vous passez à la version 1.3.0 ou supérieure.

Voici les nouvelles dépendances valides à partir de Kotlin 1.3.0:

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

Où _$kotlinVersion_ est une variable contenant la version ou une version codée en dur (c'est-à-dire _1.3.0_)


Alternativement, vous pouvez utiliser la "plaine" stdlib (_kotlin-stdlib_) au lieu des versions spécifiques à JDK. Mais vous devez changer votre dépendance de toute façon, donc je vous recommande d’utiliser _kotlin-stdlib-jdk7_ ou si vous prévoyez d’utiliser Java 8, _kotlin-stdlib-jdk8_

Les dernières versions des dépendances sont également disponibles ici . jdk7, jdk8 et le stdlib version-non spécifique suivent tous les mêmes versions une version normale, toutes les versions doivent être universellement disponibles sur les artefacts stdlib.

Note pour les autres systèmes de construction

La même solution s’applique également aux autres systèmes de compilation, mais le code est différent. Comme il existe de nombreux systèmes de construction, je ne vais pas tous les inclure, mais le point est de changer l'artefact de _kotlin-stdlib-jre[num]_ à _kotlin-stdlib-jdk[num]_ (sans crochets bien sûr). Ou, comme mentionné précédemment, _kotlin-stdlib_.

Indépendamment du système de compilation, cela se base sur l'accès aux référentiels Maven Central et similaires. Si votre système de génération ne prend pas en charge cette fonctionnalité et/ou si elle rompt avec les conventions et les référentiels de style Maven, vous devrez trouver ce qui fonctionne pour votre système de construction.

TL; DR:

Utilisez plutôt _org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version_ ou _org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version_ (selon la version que vous avez utilisée à l'origine).

109
Zoe

Supprimez cette ligne du build.gradle:

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

Ajoutez cette ligne dans le build.gradle:

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

Mettez à jour la version build.gradle au niveau du projet: kotlin version = '1.3.0'

15
Soumen Das

Dans build.gradle (Module: app), remplacez

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

avec

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

et dans build.gradle (Module: projet) remplace la version par

ext.kotlin_version = '1.3.0'
0
NIRMAL KUMAR
0
Nezneika