попередження: Файли JAR середовища виконання Kotlin у класі шляху повинні мати однакову версію


91

Я отримую таке попередження, але я не впевнений, де знаходиться v1.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.03.17

4
Ні, попередження є лише тоді, коли основні / другорядні версії не збігаються. Ми зберігаємо оновлення версій виправлень, повністю сумісні між собою
Олександр Удалов

28

Я виправив попередження, переписавши версію kotlin, що використовується в моєму додатку

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
@GithithuWambura помістив його безпосередньо в додаток 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-pluginзалежностей, щоб уникнути попереджень.
Ви можете подати нижче приклад, де 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.