ostrzeżenie: pliki JAR środowiska uruchomieniowego Kotlin w ścieżce klas powinny mieć tę samą wersję

91

Otrzymuję następujące ostrzeżenie, ale nie jestem pewien, gdzie znajduje się wersja 1.0.6.

Czy to możliwe, że ten błąd pochodzi z biblioteki Kotlin zawierającej w jakiś sposób starą wersję Kotlin?

Jakieś pomysły, jak to naprawić lub przynajmniej jak mogę zastosować się do sugestii, aby wyrazić kotlin-odbicie jawnym (1.1)?

wprowadź opis obrazu tutaj

ycomp
źródło

Odpowiedzi:

100

Wygląda na to, że Twój projekt jest skonfigurowany w taki sposób, że jesteś zależny od wersji kotlin-stdlib1.1 i kotlin-reflect1.0. Najbardziej prawdopodobnym przypadkiem jest to, że masz już wyraźną zależność od kotlin-stdlib1.1, ale nie masz od niej zależności kotlin-reflect, a jakaś inna biblioteka (od której jesteś zależny) zależy od kotlin-reflect1.0.

Jeśli tak jest, rozwiązaniem jest wyraźna zależność od wersji kotlin-reflect1.1.

W Maven dodaj to do pom.xml:

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

W Gradle dodaj to do build.gradle:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}

Zobacz informacje na ten temat i powiązane ostrzeżenia w oficjalnych dokumentach .

Alexander Udalov
źródło
Co się stanie, gdy zaktualizuję do wersji 1.1.1? Czy ponownie otrzymam ostrzeżenia z powodu tej nowej zależności 1.1.0?
ycomp
4
Nie, ostrzeżenie pojawia się tylko wtedy, gdy wersje główne / pomocnicze nie są zgodne. Utrzymujemy pełną kompatybilność aktualizacji poprawek między sobą
Alexander Udalov
28

Naprawiłem ostrzeżenie, nadpisując wersję kotlin używaną w mojej aplikacji

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') {
            details.useVersion kotlin_version
        }
    }
}

na przykład kotlin_version = 1.3.0

Vlad
źródło
Dodałem, ale nadal pojawia się ten sam błąd. To doprowadza mnie do
wariata
1
@GithithuWambura umieścił to bezpośrednio w aplikacji build.gradle bez usztywnień android {}np.
Vlad
11

po pierwsze, znajdź przyczynę za pomocą poniższego skryptu gradle

./gradlew app:dependencies

(zmień appna nazwę swojego modułu gradle)

+--- project :common
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    |    \--- org.jetbrains:annotations:13.0
|    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.12.0 -> 0.14.0
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.60 -> 1.3.61

Następnie zostanie wyświetlone drzewo zależności. sprawdź, która zależność używa zależności problemu.

Jeśli znalazłeś zależność, zdecyduj, jak ją rozwiązać.

  1. zaktualizuj wersję zależności (najnowsza wersja zależności może odnosić się do najnowszej wersji zależności)
  2. lub wyklucz zależność problemu z zależności
  3. lub skorzystaj z innych odpowiedzi.

Nie jestem pewien, jaki jest najlepszy sposób. uprzejmie po prostu się do tego odnieść

jeonghyeon kim
źródło
5

dzieje się tak, gdy używasz sztyletu w projekcie Kotlin (Android) i masz wersję kotlin 1.7 ie

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

wszystko, co musisz zrobić, to dodać poniższą zależność do poziomu gradle kompilacji aplikacji

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
Musa Abdul Wadud
źródło
2

Upewnij się, że używasz tej samej wersji stdlib-jdk7& kotlin-gradle-pluginzależności, aby uniknąć ostrzeżeń.
Możesz zapoznać się z poniższym przykładem, w którym stdlib-jdk7& kotlin-gradle-pluginoba mają tę samą wersję

Plik build.gradle na poziomie aplikacji

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
    ...
}

plik build.gradle na poziomie projektu

buildscript {
    dependencies {
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0" 
         ...
    }

}

Niral Dhameliya
źródło