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

时间:2017-03-03 02:15:29

标签: kotlin

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

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

任何想法如何修复它或至少如何遵循建议使kotlin-reflect明确(1.1)?

enter image description here

8 个答案:

答案 0 :(得分:54)

您的项目似乎是以依赖kotlin-stdlib 1.1和kotlin-reflect 1.0的方式配置的。最可能的情况是您已经明确依赖kotlin-stdlib 1.1但不依赖于kotlin-reflect,而其他一些库(您依赖它)依赖于kotlin-reflect 1.0。< / p>

如果情况确实如此,那么解决方案就是明确依赖kotlin-reflect 1.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 {
    compile "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}

查看有关此问题和相关警告的一些信息in the official docs

答案 1 :(得分:13)

我通过覆盖应用中使用的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

答案 2 :(得分:10)

首先,通过下面的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. 或遵循其他答案。

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

答案 3 :(得分:2)

当您在kotlin项目(android)中使用匕首并且kotlin版本为1.7即

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

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

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

答案 4 :(得分:2)

请确保使用相同版本的stdlib-jdk7kotlin-gradle-plugin依赖项,以避免出现警告。
您可以参考以下示例,其中stdlib-jdk7kotlin-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" 
         ...
    }

}

答案 5 :(得分:1)

替换这个

  implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.30'

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.30'

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

 classpath org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30

答案 6 :(得分:-1)

我也遇到了同样的问题,但这是由于Dagger注射错误

答案 7 :(得分:-1)

对于在 XML 无法识别的文件中发生错误的 Android 开发人员

如果它在 Android 中并且由于无法识别 xml 文件而出现错误,您可以在 xml 文件夹文件中搜索一些错误(在我的情况下,其中一个文件具有重复的标签)