предупреждение: файлы JAR времени выполнения Kotlin в пути к классам должны иметь одинаковую версию


91

Я получаю следующее предупреждение, но не уверен, где находится версия 1.0.6.

Возможно ли, что эта ошибка возникает из-за библиотеки Kotlin, которая каким-то образом включает старую версию Kotlin?

Есть идеи, как это исправить или, по крайней мере, как я могу последовать предложению сделать явное отражение kotlin (1.1)?

введите описание изображения здесь

Ответы:


100

Кажется, что ваш проект настроен таким образом, что вы зависите от kotlin-stdlibверсий 1.1 и kotlin-reflect1.0. Наиболее вероятный случай состоит в том, что у вас уже есть явная зависимость от kotlin-stdlib1.1, но нет зависимости от нее kotlin-reflect, а какая-то другая библиотека (от которой вы зависите) зависит от kotlin-reflect1.0.

Если это действительно так, решение состоит в том, чтобы обеспечить явную зависимость от kotlin-reflect1.1.

В Maven добавьте это в pom.xml:

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

В Gradle добавьте это в build.gradle:

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

См. Некоторую информацию об этом и связанных с ним предупреждениях в официальных документах .


Что произойдет, когда я обновлюсь до 1.1.1? Получу ли я снова предупреждения из-за этой новой зависимости 1.1.0?
ycomp 03

4
Нет, предупреждение появляется только тогда, когда основная / дополнительная версии не совпадают. Мы поддерживаем полную совместимость обновлений версий патчей между собой
Александр Удалов

28

Я исправил предупреждение, перезаписав версию котлина, используемую в моем приложении

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

например kotlin_version = 1.3.0


Я добавил это, но по-прежнему получаю ту же ошибку. Это сводит меня с
ума,

1
@GithuWambura поместил его прямо в приложение build.gradle без привязки, android {}например,
Влад

11

во-первых, выясните причину с помощью скрипта gradle ниже

./gradlew app:dependencies

(измените имя appвашего модуля 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

Затем будет показано дерево зависимостей. проверьте, какая зависимость использует зависимость задачи.

Если вы нашли зависимость, решите, как ее решить.

  1. обновить версию зависимости (последняя версия зависимости может относиться к последней версии зависимости проблемы)
  2. или исключить зависимость задачи из зависимости
  3. или следуйте другим ответам.

Я не уверен, что лучше. пожалуйста, просто обратитесь к нему.


5

это происходит, когда вы используете кинжал в проекте kotlin (android), и у вас версия kotlin 1.7, т.е.

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

все, что вам нужно сделать, это добавить зависимость ниже к уровню градиента сборки вашего приложения

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"

2

Убедитесь, что вы используете ту же версию stdlib-jdk7& kotlin-gradle-plugindependencies, чтобы избежать предупреждений.
Вы можете refere ниже примера , где stdlib-jdk7и kotlin-gradle-pluginоба имеют ту же версию

файл build.gradle на уровне приложения

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

файл build.gradle на уровне проекта

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

}

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.