Clase duplicada en Kotlin Android

7 minutos de lectura

avatar de usuario de los aulladores de medianoche
aulladores de medianoche

Ejemplo de imagen

Seguí recibiendo el error de que hay un error duplicado en las clases.
Esto es lo que tengo en la carpeta org.jetbrains.kotlin
.idea/bibliotecas

parece que el problema se debe a que hay dos dependencias diferentes para kotlin, desde stdlib y stdlibjdk8, pero no sé cómo eliminar ninguna de las dependencias de mi módulo/proyecto. Por favor ayuda 🙁

Aquí está el código de error completo:

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)

Intenté eliminar los archivos de org.jetbrains.kotlin, pero cada vez que construyo la aplicación en Android Studio, los archivos se vuelven a descargar.

este es el código gradle de mi aplicación de módulo


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'

  • Pensé que era el único que recibió este error sin haber usado Kotlin en ninguna parte de mi gran proyecto. Luego encontré esta respuesta muy obvia para mí ahora y lo resolvió de manera muy simple para mí. .stackoverflow.com/a/75315276/4355877

    – Micky

    6 de marzo a las 16:11

Avatar de usuario de Jurpro
jurpro

Simplemente. Para mí, solo cambie estos complementos de Gradle de 1.7.10 a 1.8.0 y luego sincronice. => invalidar cachés => construir

De:

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

A:

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

  • Nota: Después de actualizar a ‘1.8.0’, no olvide actualizar kotlinCompilerExtensionVersion como ‘1.4.0’.

    – jamescodingnow

    4 de febrero a las 23:22

  • Me sale un error de compilación: Esta versión (1.3.2) de Compose Compiler requiere la versión 1.7.20 de Kotlin, pero parece que está utilizando la versión 1.8.0 de Kotlin, que no se sabe si es compatible. Corrija su configuración (o suppressKotlinVersionCompatibilityCheck pero no digas que no te avisé!).

    – Igor Ganapolski

    10 de febrero a las 12:15

  • Pregunta como novato: ¿Dónde debo agregar lo anterior?

    – Prasannjeet Singh

    12 de febrero a las 22:02

  • Si está utilizando ksp, no olvide actualizarlo también. github.com/google/ksp/releases. Para la versión 1.8.0 de kotlin, ksp debe ser 1.8.0

    – Enes Kayıklık

    18 de febrero a las 11:26


  • Recibí este error: el complemento de Gradle ‘kotlin-android-extensions’ ya no es compatible. Utilice esta guía de migración (goo.gle/kotlin-android-extensiones-deprecación) para comenzar a trabajar con Ver enlace (desarrollador.android.com/topic/libraries/view-binding) y el complemento ‘kotlin-parcelize’.

    – Reijo Korhonen

    6 de marzo a las 22:20

Avatar de usuario de David Fraser
David Fraser

Esto es porque kotlin-stdlib-jdk7 y kotlin-stdlib-jdk8 son dependencias más antiguas que deben ser reemplazadas por kotlin-stdlib (Como señaló @MrPNG de los documentos de novedades de kotlin 1.8). Sin embargo, otras bibliotecas aún pueden declarar una dependencia de ellas, que debe reemplazarse por una dependencia de kotlin-stdlib.

Puede anular cómo se resuelven las versiones jdk7 y jdk8 de esta manera (en su 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")
        }
    }
}

El constraints La sección anterior se puede agregar junto con sus otras dependencias. Elija la versión (aquí 1.8.0) para que coincida con el que realmente desea usar, que debería ser el que su versión sin nombre jdkN está en el error de clase duplicada (por ejemplo, (org.jetbrains.kotlin:kotlin-stdlib:1.8.0))

Si usted tiene apply plugin: 'kotlin-android' en este archivo, entonces no es necesario que diga por separado que dependa de la biblioteca estándar en las dependencias, así que elimine las líneas que se vean así:

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

(gracias a este blog)

  • Tengo un proyecto en el que la compilación falló por el mismo motivo que el anterior. Y no estoy usando ningún código kotlin en mi proyecto. ¿Hay alguna manera de deshabilitar todas y cada una de las dependencias de Kotlin para que no pueda obtener “clases duplicadas” para las dependencias de Kotlin?

    – AJW

    9 de marzo a las 0:10

  • Si no está utilizando ningún código kotlin, parece un problema muy diferente incluso si tiene el mismo mensaje de error… probablemente valga la pena publicarlo como una pregunta separada

    – David Fraser

    ayer

Recibí el mismo error después de actualizar la biblioteca de anotaciones de Android de la versión 1.4.0 a la 1.6.0,

implementation 'androidx.annotation:annotation:1.6.0'

Así que bajé a 1.5.0 y desapareció el error

implementation 'androidx.annotation:annotation:1.5.0'

Espero que esto le ayude también

Resolví el problema cambiando la dependencia de ruta de clase de kotlin en la raíz build.gradle archivo de

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

a

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

avatar de usuario de riggaroo
riggaroo

Si está utilizando Compose, necesita actualizar Compose Compiler (https://developer.android.com/jetpack/androidx/releases/compose-compiler) a 1.4.2 y Kotlin a 1.8.10 al mismo tiempo.

Avatar de usuario de Tran Chien
Tran Chien

Actualice el complemento de Android Kotlin y el compilador Kotlin

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

Avatar de usuario de Luiz Rodrigo
Luis Rodrigo

Según las notas de la versión de Kotlin 1.8.0 (https://kotlinlang.org/docs/whatsnew18.html#updated-jvm-compilation-target), no debe especificar kotlin-stdlib-jdk7 ni kotlin-stdlib-jdk8 como dependencias y, en su lugar, solo use kotlin-stdlib.

¿Ha sido útil esta solución?