警告:类路径中的Kotlin运行时JAR文件应具有相同的版本

yco*_*omp 56 kotlin

我收到以下警告,但我不确定v1.0.6所在的位置.

是否有可能这个错误来自Kotlin库,包括一个旧的Kotlin版本?

任何想法如何解决它或至少如何遵循建议使kotlin反映明确(1.1)?

在此输入图像描述

Ale*_*lov 70

您的项目似乎是以依赖于kotlin-stdlib1.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>
Run Code Online (Sandbox Code Playgroud)

在Gradle中,将其添加到build.gradle:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}
Run Code Online (Sandbox Code Playgroud)

在官方文档中查看有关此信息和相关警告的一些信息.

  • 不,只有在主要/次要版本不匹配时才会出现警告。我们保持补丁版本更新彼此完全兼容 (6认同)
  • `pom.xml` 文件应该位于哪里? (2认同)

jeo*_*kim 25

首先,通过下面的gradle脚本找出原因

./gradlew app:dependencies
Run Code Online (Sandbox Code Playgroud)

(更改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
Run Code Online (Sandbox Code Playgroud)

然后,将显示依赖树。检查哪个依赖项使用问题依赖项。

如果找到依赖项,请决定如何解决它。

  1. 升级依赖的版本(依赖的最新版本可以参考最新发布的依赖版本)
  2. 或从依赖项中排除问题依赖项
  3. 或按照其他答案。

我不确定什么是最好的方法。请参考它。


Vla*_*lad 17

我通过覆盖我的应用程序中使用的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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如 kotlin_version = 1.3.0

  • @GithithuWambura 将其直接放入应用程序 build.gradle 中,无需在“android {}”中大括号,例如 (2认同)
  • /*或者*/configurations.all { resolutionStrategy { everyDependency { if ((requested.group == "org.jetbrains.kotlin") &amp;&amp; (!requested.name.startsWith("kotlin-gradle"))) { useVersion(kotlin_version) ) } } } } (2认同)

小智 8

当您在 kotlin 项目(android)中使用 dagger 并且您的 kotlin 版本为 1.7 时会发生这种情况,即

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
Run Code Online (Sandbox Code Playgroud)

您所要做的就是将下面的依赖项添加到您的应用程序构建 gradle 级别

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"
Run Code Online (Sandbox Code Playgroud)


Nir*_*iya 7

确保使用相同版本的stdlib-jdk7&kotlin-gradle-plugin依赖项以避免警告。
您可以参考下面的示例,其中stdlib-jdk7&kotlin-gradle-plugin两者具有相同的版本

应用程序级build.gradle文件

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
    ...
}
Run Code Online (Sandbox Code Playgroud)

项目级build.gradle文件

buildscript {
    dependencies {
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0" 
         ...
    }
Run Code Online (Sandbox Code Playgroud)

}


Mub*_*aza 7

替换这个

  implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.30'
Run Code Online (Sandbox Code Playgroud)

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.30'
Run Code Online (Sandbox Code Playgroud)

库的版本应该与项目级别的插件版本相同

 classpath org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30
Run Code Online (Sandbox Code Playgroud)