Błąd Kotlin: nie można znaleźć org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7

101

Zainstalowałem wtyczkę Kotlin w mojej aplikacji (v. V1.1.1-release-Studio2.2-1), a następnie wybrałem "Konfiguruj Kotlin w projekcie" Wybrałem kompilator i wersję uruchomieniową 1.0.7. Kotlin zaktualizował moje pliki Gradle. Teraz, gdy próbuję wbudować, otrzymuję:

Błąd: wystąpił problem podczas konfigurowania projektu „: aplikacja”. Nie można rozwiązać wszystkich zależności dla konfiguracji „: app: _debugApkCopy”. Nie można znaleźć org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7. Wymagane przez:

MyApplication: app: nieokreślona

Nie jestem pewien, czego tu brakuje.

Mike6679
źródło
2
Opublikuj poziom swojego projektugradle
Patel Pinkal
W ten sposób dodajesz obsługę Kotlin dla Androida: kotlinlang.org/docs/reference/using-gradle.html
IgorGanapolsky

Odpowiedzi:

160

zastąpić

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

z

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

Ponieważ wersja z jre jest absolutna, po prostu zastąp i zsynchronizuj projekt

Oficjalna dokumentacja tutaj Dzięki za link @ ROMANARMY

Miłego kodowania :)

leoelstin
źródło
1
Kilka przydatnych informacji w dokumentach o jdk i jre.
R0MANARMY
Wierzę, że pewnego dnia zespół Android trochę ułatwi sprawę, nie tylko trochę, albo przynajmniej zapisze znaczące zmiany w dzienniku zmian za pomocą pogrubienia, zamiast zakopać go głęboko w witrynie do wydobycia :))
Farid
12
Zajęło mi pełną minutę wpatrywania się, aby zobaczyć różnicę między jrea… jdkMuszę się starzeć.
James Wang
32

Na poziomie projektu build.gradleużywaj tylko tej wersji

ext.kotlin_version = '1.3.31'

Usuń inne wersje

Działa to tylko z najnowszą wersją Android Studio 3.4

AKTUALIZACJA: Spróbuj użyć najnowszej wersji kotlin z najnowszym Android Studio, aby uniknąć błędu.

Patel Pinkal
źródło
22
Odpowiedź, która określa magiczną wersję do użycia, bez wyjaśnienia, nie jest wcale taka pomocna, a z czasem staje się jeszcze mniej pomocna. Czy sugerujesz aktualizację z niższej wersji? Albo przejście z wyższej wersji, ponieważ wyższa wersja zawiera błąd?
Don Hatch
3
@DonHatch ta odpowiedź została udzielona w marcu dla Android Studio 2.2, które otrzymało wzmiankę o błędzie powyżej w pytaniu. To nie jest dla Android Studio 3.0 lub nowszego.
Patel Pinkal
@ 0xalihn odpowiedź poniżej ma poprawne rozwiązanie bez magicznego numeru wersji
Lou Morda
@PatelPinkal, czy możesz zaktualizować swoją odpowiedź do najnowszej wersji Android Studio.
Arbaz w
1
Zaktualizowałem odpowiedź zgodnie z najnowszą wersją studia Android
Arbaz.
21

Podział kotlin-stdlibna kotlin-stdlib-jre7i kotlin-stdlib-jre8został wprowadzony dopiero w Kotlin 1.1, dlatego zależności nie można rozwiązać, wersja pakietu po prostu nie istnieje.

Wygląda na to, że aktualizacja plików projektu w pewnym momencie nie powiodła się i ustawiono wersję Kotlin na 1.0.7. Jeśli jest to nowy projekt i nic Cię nie powstrzymuje przed użyciem 1.1.1, przełączyłbym się na to. Po wykonaniu tej czynności Twój problem powinien zniknąć.

skalarproduktraum
źródło
3
Dziękuję za wyjaśnienie. Kilka odpowiedzi mówi, że użyj 1.1.1 bez wyjaśnienia, co sprawi, że odpowiedzi szybko staną się bezużyteczne w przyszłości.
Don Hatch
12

W pliku „build.gradle” zmień bieżącą wersję Kotlina na tę linię i naciśnij synk:

ext.kotlin_version = '1.1.1'

/// To będzie wyglądać następująco:

// Plik kompilacji najwyższego poziomu, w którym można dodać opcje konfiguracji wspólne dla wszystkich podprojektów / modułów.

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
źródło
8

Począwszy od Kotlin 1.1.2, zależności z grupą org.jetbrains.kotlinsą domyślnie rozwiązywane z wersją pobraną z zastosowanej wtyczki. Możesz podać wersję ręcznie, używając pełnej notacji zależności, takiej jak:

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

Jeśli celujesz w JDK 7 lub JDK 8, możesz użyć rozszerzonych wersji standardowej biblioteki Kotlin, która zawiera dodatkowe funkcje rozszerzeń dla interfejsów API dodanych w nowych wersjach JDK. Zamiast kotlin-stdlib użyj jednej z następujących zależności:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
0xAliHn
źródło
7

Nowe rozwiązanie jeśli korzystasz z Android Studio 3.2, rozwiązałem ten problem dodając mavenCentral () do build.gradle projektu:

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

Należy dodać linię jako to zamówienie, kredyt jest dla tej odpowiedzi

Mohamed ElSawaf
źródło
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
źródło
Możesz wyjaśnić, w jaki sposób poprawia to odpowiedź Mihail Salari, na której wydaje się, że jest ona oparta.
Nemo
3

Jeśli używasz Android Studio 3.2 lub nowszego, problem zostanie rozwiązany poprzez dodanie google () i jcenter () do build.gradle projektu:

repositories {
        google()
        jcenter()
}
vikas
źródło
2

Oto, co zadziałało w moim przypadku: Używając 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
źródło
2

Rozwiązałem ten problem, odznaczając opcję pracy w trybie offline w programieSettings

wprowadź opis obrazu tutaj

andreikashin
źródło
1
  1. Sprawdź aktualną wersję swojego Kotlina w poniższej ścieżce,

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

zmień na tę wersję (1.0.5)w pliku gradle na poziomie projektu.

Możesz zobaczyć, że w powyższej ścieżce nie ma jre versionmowy o żadnej Javie - więc usuń w pliku gradle na poziomie aplikacji, jak poniżej,

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
user8056898
źródło
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

Niektóre biblioteki wymagają zaktualizowanego gradle . Jak na przykład:

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

GL

Braian Coronel
źródło
0

W przypadku, gdy zależność (przechodnia) nadal korzysta z jrewariantu biblioteki Kotlin, możesz wymusić użycie jdkwariantu za pomocą strategii rozwiązania:

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
źródło
0

Proste kroki:

  1. Kliknij opcję Plik> Struktura projektu

  2. Kliknij Zależności> Znajdź i kliknij org.jetbrains.kotlin: kotlin-stdlib-jdk7: 1.3.21 (lub jakakolwiek jest twoja aktualna wersja)

  3. W sekcji Szczegóły> aktualizacja kliknij [aktualizuj zmienną] [aktualizuj zależności]

  4. Kliknij OK

Z poważaniem

Azhar Husain Raeisi
źródło
0

Po naprawieniu wersji build.gradle zaczął działać od 4.0.0 do 3.5.0

Kevin Kulothungan
źródło