Warnung: Kotlin-Laufzeit-JAR-Dateien im Klassenpfad sollten dieselbe Version haben

83

Ich erhalte die folgende Warnung, bin mir jedoch nicht sicher, wo sich Version 1.0.6 befindet.

Ist es möglich, dass dieser Fehler aus einer Kotlin-Bibliothek stammt, die eine alte Kotlin-Version enthält?

Irgendwelche Ideen, wie man das Problem behebt oder zumindest wie ich dem Vorschlag folgen kann, Kotlin-Reflect explizit zu machen (1.1)?

Geben Sie hier die Bildbeschreibung ein

ycomp
quelle

Antworten:

95

Es scheint, dass Ihr Projekt so konfiguriert ist, dass Sie von kotlin-stdlib1.1 und kotlin-reflect1.0 abhängig sind . Der wahrscheinlichste Fall ist, dass Sie bereits eine explizite Abhängigkeit von kotlin-stdlib1.1 haben, aber keine Abhängigkeit von kotlin-reflectund eine andere Bibliothek (von der Sie abhängig sind) von kotlin-reflect1.0 abhängt .

Wenn dies tatsächlich der Fall ist, besteht die Lösung darin, eine explizite Abhängigkeit von kotlin-reflect1.1 bereitzustellen .

Fügen Sie in Maven Folgendes hinzu pom.xml:

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

Fügen Sie in Gradle Folgendes hinzu build.gradle:

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

Informationen dazu und zu den entsprechenden Warnungen finden Sie in den offiziellen Dokumenten .

Alexander Udalov
quelle
Was passiert beim Upgrade auf 1.1.1? Bekomme ich aufgrund dieser neuen Abhängigkeit von 1.1.0 erneut Warnungen?
ycomp
4
Nein, die Warnung wird nur angezeigt, wenn die Haupt- / Nebenversionen nicht übereinstimmen. Wir halten Patch-Versions-Updates vollständig miteinander kompatibel
Alexander Udalov
26

Ich habe die Warnung behoben, indem ich die in meiner App verwendete Kotlin-Version überschrieben habe

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

z.B kotlin_version = 1.3.0

Vlad
quelle
Ich habe das hinzugefügt, bekomme aber immer noch den gleichen Fehler. Es macht mich
verrückt
@ GithithuWambura legte es direkt in App build.gradle ohne Klammer in android {}zB
Vlad
8

Ermitteln Sie zunächst den Grund anhand des folgenden Gradle-Skripts

./gradlew app:dependencies

(Ändern appSie den Namen Ihres Gradle-Moduls.)

+--- 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

Dann wird der Abhängigkeitsbaum angezeigt. Überprüfen Sie, welche Abhängigkeit die Problemabhängigkeit verwendet.

Wenn Sie die Abhängigkeit gefunden haben, entscheiden Sie, wie Sie sie lösen möchten.

  1. Aktualisieren Sie die Version der Abhängigkeit (die neueste Version der Abhängigkeit bezieht sich möglicherweise auf die neueste Ausgabe der Abhängigkeitsversion).
  2. oder schließen Sie die Problemabhängigkeit von der Abhängigkeit aus
  3. oder folgen Sie anderen Antworten.

Ich bin mir nicht sicher, was der beste Weg ist. Bitte beziehen Sie sich einfach darauf.

Jeonghyeon Kim
quelle
5

Es passiert, wenn Sie den Dolch in einem Kotlin-Projekt (Android) verwenden und die Kotlin-Version 1.7 hat, dh

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

Alles, was Sie tun müssen, ist, die folgende Abhängigkeit zu Ihrem Gradle-Level für die App-Erstellung hinzuzufügen

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
Musa Abdul Wadud
quelle
0

Stellen Sie sicher, dass Sie dieselbe Version von stdlib-jdk7& kotlin-gradle-pluginAbhängigkeiten verwenden, um Warnungen zu vermeiden.
Sie können sich auf das folgende Beispiel beziehen, bei dem stdlib-jdk7& kotlin-gradle-pluginbeide dieselbe Version haben

build.gradle-Datei auf App-Ebene

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

build.gradle-Datei auf Projektebene

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

}}

Niral Dhameliya
quelle
-2

Ich hatte das gleiche Problem, aber es lag an der falschen Injektion von Dagger

Sayali
quelle
2
Bitte lesen Sie diesen Link, bevor Sie StackOverflow stackoverflow.com/tour
Antu
2
@Antu Ehrlich gesagt, ich habe gerade eine Dolchinjektion hinzugefügt und die gleiche Nachricht erhalten, daher ist an dieser Antwort nichts auszusetzen. Keine vollständige Lösung, aber es gibt Hinweise, wo Sie suchen müssen.
Rickard Elimää