advertencia: los archivos JAR de tiempo de ejecución de Kotlin en la ruta de clase deben tener la misma versión

83

Recibo la siguiente advertencia, pero no estoy seguro de dónde reside v1.0.6.

¿Es posible que este error provenga de una biblioteca de Kotlin que de alguna manera incluye una versión antigua de Kotlin?

¿Alguna idea de cómo solucionarlo o al menos cómo puedo seguir la sugerencia para hacer explícito kotlin-reflect (1.1)?

ingrese la descripción de la imagen aquí

ycomp
fuente

Respuestas:

95

Parece que su proyecto está configurado de tal manera que depende de kotlin-stdlib1.1 y kotlin-reflect1.0. El caso más probable es que ya tenga una dependencia explícita de kotlin-stdlib1.1 pero no tenga dependencia de kotlin-reflect, y alguna otra biblioteca (de la que dependa) dependa de kotlin-reflect1.0.

Si ese es el caso, la solución es proporcionar una dependencia explícita en kotlin-reflect1.1.

En Maven, agregue esto a pom.xml:

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

En Gradle, agregue esto a build.gradle:

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

Consulte información sobre esto y las advertencias relacionadas en los documentos oficiales .

Alexander Udalov
fuente
¿Qué sucede cuando actualizo a 1.1.1? ¿Volveré a recibir advertencias debido a esta nueva dependencia 1.1.0?
ycomp
4
No, la advertencia está ahí solo cuando las versiones principales / secundarias no coinciden. Mantenemos las actualizaciones de la versión del parche totalmente compatibles entre sí
Alexander Udalov
26

Arreglé la advertencia al sobrescribir la versión de kotlin utilizada en mi aplicación

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

p.ej kotlin_version = 1.3.0

Vlad
fuente
Agregué eso pero todavía aparece el mismo error. Me está volviendo loco ...
Joseph Wambura
@GithithuWambura lo puso directamente en la aplicación build.gradle sin refuerzos en, android {}por ejemplo
Vlad
8

en primer lugar, averigüe el motivo con el script de Gradle a continuación

./gradlew app:dependencies

(cambie appa su nombre de módulo de 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

Luego, se mostrará el árbol de dependencias. compruebe qué dependencia utiliza la dependencia del problema.

Si encontró la dependencia, decida cómo resolverla.

  1. actualizar la versión de la dependencia (la última versión de la dependencia puede referirse a la última versión de la dependencia del problema)
  2. o excluir la dependencia del problema de la dependencia
  3. o siga otras respuestas.

No estoy seguro de cuál es la mejor manera. amablemente solo consúltalo.

jeonghyeon kim
fuente
5

sucede cuando estás usando la daga en un proyecto de kotlin (android) y tienes la versión de kotlin 1.7, es decir

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

todo lo que tiene que hacer es agregar la dependencia a continuación al nivel de gradle de compilación de su aplicación

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
Musa Abdul Wadud
fuente
1

Asegúrese de usar la misma versión de stdlib-jdk7& kotlin-gradle-plugindependencies para evitar advertencias.
Puede consultar el siguiente ejemplo donde stdlib-jdk7y kotlin-gradle-pluginambos tienen la misma versión

archivo build.gradle de nivel de aplicación

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

archivo build.gradle a nivel de proyecto

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

}

Niral Dhameliya
fuente
-2

Estaba enfrentando el mismo problema, pero se debía a una inyección incorrecta de Dagger

Sayali
fuente
2
Lea este enlace antes de usar StackOverflow stackoverflow.com/tour
Antu
2
@Antu Honestamente, acabo de agregar una inyección de Dagger y recibí el mismo mensaje, por lo que no hay nada de malo en esta respuesta. No es una solución completa, pero da indicaciones sobre dónde buscar.
Rickard Elimää