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

时间:2018-02-02 14:02:46

标签: android android-studio kotlin

我决定将几个Kotlin文件添加到AS 3.0中的现有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?如何删除它?

1 个答案:

答案 0 :(得分:7)

  

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

您有不同的版本,因为您的某些依赖项依赖于Kotlin 1.1版本。

  

为什么Android Studio在其中拥有自己的旧版Kotlin   类路径?如何删除它?

更新您的依赖项,例如我解释here in a related question about renamed stdlib-jre7并已解释here for conflictive dependencies that have not been renamed

Kotlin reference - binary compatibility warnings

  

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

     

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

     

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

     

这意味着您依赖于不同的库   版本,例如1.1标准库和1.0反射   库。

     

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

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

通过命令或自AS 3.1

以来的构建选项卡查找冲突依赖项
./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath

enter image description here

enter image description here

enter image description here

enter image description here

In the related question,警告已删除,将Realm版本更新为4.3.2。

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