为什么在类路径中有不同版本的Kotlin JAR?

我决定在AS 3.0中添加一对Kotlin文件到现有的Java Android项目中。

一旦我添加Kotlin文件,我让助手添加适当的行到我的build.gradle文件,特别是:

project build.gradle

 buildscript { ext.kotlin_version = '1.2.21' //... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 

app build.gradle

 // top of file apply plugin: 'com.android.application' apply plugin: 'kotlin-android' //.... dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 

不幸的是,所有的构建都会产生这样的警告

 Warning:Runtime JAR files in the classpath should have the same version. These files were found in the classpath: /Users/sddsfsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.2.21/88bfff5aa470143a83b0bc5ec00c0be8cabd7cad/kotlin-stdlib-jdk7-1.2.21.jar (version 1.2) /Applications/Android Studio.app/Contents/gradle/m2repository/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.1.51/kotlin-stdlib-jre7-1.1.51.jar (version 1.1) /Users/sddsfsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.21/d64187eb2d9d1521be3421aa8c6774a8625cdde8/kotlin-stdlib-1.2.21.jar (version 1.2) 

为什么Android Studio在类路径中有自己的老版本的Kotlin? 我如何删除它?

为什么在类路径中有不同版本的Kotlin JAR?

你有不同的版本,因为你的一些依赖依赖于Kotlin 1.1版本。

为什么Android Studio在类路径中有自己的老版本的Kotlin? 我如何删除它?

更新你的依赖关系,就像我在这里解释的关于重命名的stdlib-jre7的相关问题, 这里已经解释了没有被重命名的冲突依赖关系 。

Kotlin参考 – 二进制兼容性警告 :

类路径中的运行时JAR文件应具有相同的版本。

类路径中的一些运行时JAR文件具有不兼容的版本。

考虑从类路径中删除它们。

这意味着您对不同版本的库有依赖关系,例如1.1标准库和1.0reflection库。

为了防止在运行时出现细微的错误,我们建议您使用所有Kotlin库的相同版本。 在这种情况下,考虑添加一个显式的依赖关系。

在你的情况下,间接依赖被重命名,你需要更新使用它的库:

通过命令查找冲突依赖关系,或从AS 3.1开始构建选项卡

 ./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath 

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

在相关问题中 ,警告已被删除,将Realm版本更新为4.3.2。

注意:我检查了我的路径,我也有过时的依赖关系,但是如果你不使用它也没关系。