Doppelte Klasse in Kotlin Android

Lesezeit: 8 Minuten

Benutzeravatar von Midnighthowlers
Mitternachtsheuler

Bildbeispiel

Ich habe immer wieder die Fehlermeldung erhalten, dass es in den Klassen doppelte Fehler gibt.
Dies ist, was ich im Ordner org.jetbrains.kotlin habe
.idee/bibliotheken

Es scheint, als ob das Problem darin besteht, dass es zwei verschiedene Abhängigkeiten für Kotlin gibt, von stdlib und stdlibjdk8, aber ich weiß nicht, wie ich eine von meinen Modul-/Projektabhängigkeiten entfernen kann. Bitte helft 🙁

Hier ist der vollständige Fehlercode:

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.io.path.ExperimentalPathApi found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathRelativizer found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk7-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0)
Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)
Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and jetified-kotlin-stdlib-jdk8-1.6.0 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0)

Ich habe versucht, die Dateien aus org.jetbrains.kotlin zu löschen, aber wenn ich die App in Android Studio erstelle, werden die Dateien erneut heruntergeladen.

Dies ist mein Modul-App-Gradle-Code


plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
}

android {
    compileSdk 33

    defaultConfig {
        applicationId "com.example.umfs"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildFeatures {
        viewBinding true
    }

    namespace 'com.example.umfs'
}

dependencies {


    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.7.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'com.google.firebase:firebase-database:20.1.0'
    implementation 'androidx.preference:preference:1.2.0'
    implementation 'com.google.firebase:firebase-auth:21.1.0'
    implementation 'com.google.firebase:firebase-core:21.1.1'
    implementation 'androidx.navigation:navigation-fragment:2.5.3'
    implementation 'androidx.navigation:navigation-ui:2.5.3'
    implementation 'com.google.firebase:firebase-firestore:24.4.1'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0'
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation "androidx.cardview:cardview:1.0.0"
    implementation 'com.google.firebase:firebase-firestore:24.4.1'
    implementation 'com.google.firebase:firebase-storage:20.1.0'
    implementation 'com.google.firebase:firebase-database'
    implementation platform('com.google.firebase:firebase-bom:28.4.0')
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.makeramen:roundedimageview:2.3.0'
    implementation 'com.github.bumptech.glide:glide:4.14.2'
    implementation 'com.github.marlonlom:timeago:4.0.3'
    implementation "androidx.core:core-ktx:+"

}

apply plugin: 'com.google.gms.google-services'

  • Ich dachte, ich wäre der einzige, der diesen Fehler bekam, obwohl ich Kotlin nirgendwo in meinem großen Projekt verwendet hatte. Dann stieß ich auf diese für mich jetzt sehr offensichtliche Antwort und sie löste es sehr einfach für mich. .stackoverflow.com/a/75315276/4355877

    – Mick

    6. März um 16:11 Uhr

  • @Mick Vielen Dank für den Tipp, ein Lebensretter für diejenigen, die Kotlin meiden.

    – Hong

    28. März um 15:58 Uhr

  • @midnighthowlers Versuchen Sie diese Lösung einmal: stackoverflow.com/a/75974885/16765223

    – M ABW

    10. April um 6:59 Uhr

Benutzeravatar von Jurpro
Jurpro

Einfach. Bei mir gradle Plugins einfach von 1.7.10 auf 1.8.0 ändern und dann synchronisieren. => Caches ungültig machen => bauen

Aus:

plugins {
....
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}

Zu:

plugins {
....
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}

  • Hinweis: Vergessen Sie nach dem Update auf ‘1.8.0’ nicht, kotlinCompilerExtensionVersion als ‘1.4.0’ zu aktualisieren.

    – jamescodingnow

    4. Februar um 23:22 Uhr

  • Ich erhalte einen Kompilierungsfehler: Diese Version (1.3.2) des Compose Compilers erfordert Kotlin Version 1.7.20, aber Sie scheinen Kotlin Version 1.8.0 zu verwenden, die nicht als kompatibel bekannt ist. Bitte korrigieren Sie Ihre Konfiguration (bzw suppressKotlinVersionCompatibilityCheck aber sagen Sie nicht, ich hätte Sie nicht gewarnt!).

    – IgorGanapolsky

    10. Februar um 12:15 Uhr

  • Frage als Noob: Wo soll ich das oben hinzufügen?

    – Prasannjeet Singh

    12. Februar um 22:02 Uhr

  • Wenn Sie ksp verwenden, vergessen Sie nicht, es ebenfalls zu aktualisieren. github.com/google/ksp/releases. Für Kotlin-Version 1.8.0 muss ksp 1.8.0 sein

    – Enes Kayıklık

    18. Februar um 11:26 Uhr


  • @PrasannjeetSingh Es ist build.gradle Datei

    – kangkyū

    25. März um 8:24 Uhr

Benutzeravatar von David Fraser
David Fraser

Das ist weil kotlin-stdlib-jdk7 Und kotlin-stdlib-jdk8 sind ältere Abhängigkeiten, die durch ersetzt werden sollten kotlin-stdlib (Wie @MrPNG von betonte die Dokumentation zu den Neuerungen für Kotlin 1.8). Andere Bibliotheken können jedoch immer noch eine Abhängigkeit von ihnen deklarieren, die durch eine Abhängigkeit von ersetzt werden muss kotlin-stdlib.

Sie können überschreiben, wie die jdk7- und jdk8-Versionen so aufgelöst werden (in Ihrer app/build.gradle):

dependencies {
    constraints {
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
            because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
        }
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
            because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
        }
    }
}

Der constraints Der obige Abschnitt kann neben Ihren anderen Abhängigkeiten hinzugefügt werden. Wählen Sie die Version (hier 1.8.0), um mit der Version übereinzustimmen, die Sie tatsächlich verwenden möchten, die diejenige sein sollte, in der sich Ihre nicht-jdkN-benannte Version im doppelten Klassenfehler befindet (z (org.jetbrains.kotlin:kotlin-stdlib:1.8.0))

Wenn Sie haben apply plugin: 'kotlin-android' in dieser Datei, dann muss es nicht separat auch sagen, dass es in Abhängigkeiten von der stdlib abhängig sein soll, also entfernen Sie alle Zeilen, die so aussehen:

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

(Dank an dieses Blog)

  • Ich habe ein Projekt, bei dem der Build aus dem gleichen Grund wie oben fehlgeschlagen ist. Und ich verwende in meinem Projekt keinen Kotlin-Code. Gibt es eine Möglichkeit, alle Kotlin-Abhängigkeiten zu deaktivieren, sodass ich möglicherweise keine “doppelten Klassen” für Kotlin-Abhängigkeiten erhalten kann?

    – AJW

    9. März um 0:10

  • Wenn Sie keinen Kotlin-Code verwenden, klingt es wie ein ganz anderes Problem, auch wenn es dieselbe Fehlermeldung hat … wahrscheinlich lohnt es sich, es als separate Frage zu posten

    – David Fraser

    10. März um 14:22 Uhr

  • @AJW Sie denken vielleicht, dass Sie in Ihrem Projekt keinen Kotlin-Code verwenden, aber die Abhängigkeiten, die Sie verwenden, können Kotlin-Code darin verwenden (z. B. sind verschiedene AndroidX-Bibliotheken in Kotlin geschrieben).

    – Robyer

    17. März um 11:00 Uhr

  • Es funktioniert jetzt. Informationen finden Sie auch in youtrack.jetbrains.com.

    – Blaues Meer

    23. März um 10:22 Uhr


Ich habe denselben Fehler erhalten, nachdem ich die Android-Anmerkungsbibliothek von Version 1.4.0 auf 1.6.0 aktualisiert habe.

implementation 'androidx.annotation:annotation:1.6.0'

Also habe ich auf 1.5.0 heruntergestuft und der Fehler ist weg

implementation 'androidx.annotation:annotation:1.5.0'

Hoffe das hilft dir auch

  • Ich verwende Kotlin nicht in einem Projekt und dies hat mein Problem gelöst.

    – Joninx

    23. März um 11:46 Uhr

Benutzeravatar von Zakaria Bin Abdur Rouf
Zakaria Bin Abdur Rouf

Ich habe alle vorherigen Lösungen ausprobiert, aber nachdem ich den folgenden Code hinzugefügt hatte, funktionierte es.

dependencies {
   ... ... ...
   implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
   ... ... ...
}

Aktualisieren Sie das Kotlin-Android-Plugin und den Kotlin-Compiler

plugins {
    id 'org.jetbrains.kotlin.android' version '1.8.10'
}
android {
    composeOptions {
        kotlinCompilerExtensionVersion = "1.4.3"
    }
}

  • Das hat bei mir funktioniert. Obwohl ich nur das Kotlin-Android-Plugin aktualisieren musste. Danke!

    – Frankdroid7

    10. April um 20:11 Uhr

  • Das Hinzufügen des Plugins hat bei mir funktioniert, obwohl mein Projekt nur Java ist und ich Kotlin überhaupt nicht verwende. Das sieht für mich wirklich nach einem Fehler in Android Studio aus, wenn nicht sogar nach einem Fehler.

    – Gabriel

    11. April um 13:57 Uhr

Benutzeravatar von Mohamed Medhat
Mohammed Medhat

Ich habe das Problem gelöst, indem ich die Kotlin-Klassenpfadabhängigkeit im Stammverzeichnis geändert habe build.gradle Datei aus

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20-RC"

Zu

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"

  • Das hat bei mir funktioniert. Obwohl ich nur das Kotlin-Android-Plugin aktualisieren musste. Danke!

    – Frankdroid7

    10. April um 20:11 Uhr

  • Das Hinzufügen des Plugins hat bei mir funktioniert, obwohl mein Projekt nur Java ist und ich Kotlin überhaupt nicht verwende. Das sieht für mich wirklich nach einem Fehler in Android Studio aus, wenn nicht sogar nach einem Fehler.

    – Gabriel

    11. April um 13:57 Uhr

Benutzeravatar von IgorGanapolsky
IgorGanapolsky

Wenn Sie Compose verwenden, müssen Sie den Compose Compiler aktualisieren (https://developer.android.com/jetpack/androidx/releases/compose-compiler) auf 1.4.2 und Kotlin auf 1.8.10 gleichzeitig.

1449400cookie-checkDoppelte Klasse in Kotlin Android

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy