I've just enabled Kotlin in my Android project and I stumbled upon a warning. After the second build (Build -> Rebuild Project) this warning is shown under Messages:
Warning:Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.2.10/85fe1811f3e586d0cc53aba1394d8089f1862215/kotlin-stdlib-jdk8-1.2.10.jar (version 1.2)
~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.10/19bc012f8c4cd6b705bd6512263777cc19bcf259/kotlin-reflect-1.2.10.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)
~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.2.10/cfe8b616b3bf0811ef70863c86b745a2e767a66e/kotlin-stdlib-jdk7-1.2.10.jar (version 1.2)
~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.10/b9bf650516989595a5390e5a54181e16347208ac/kotlin-stdlib-1.2.10.jar (version 1.2)
It seems like the second build includes the outdated kotlin-stdlib-jre7-1.1.51.jar
from cache. After a clean build (Build -> Clean Project) the warning is gone, and the next Rebuild Project brings it up again.
I'm using Android Studio 3.0.1 and I explicitly include the Kotlin dependencies with version:
build.gradle
buildscript {
ext {
// shared build properties
kotlin_version = '1.2.10'
buildToolsVersion = '27.0.2'
minSdkVersion = 15
targetSdkVersion = 27
compileSdkVersion = 27
}
repositories {
jcenter()
google()
}
dependencies {
classpath "com.android.tools.build:gradle:3.0.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}"
}
}
app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}"
[...]
}
Also on our travis builds the warning is shown. Thus, it is not only a problem with my local setup. Even if it is only a warning, I don't feel comfortable by releasing an apk that includes conflicting versions.
You already fixed it updating your dependencies but I'll answer here to link a related question.
You configured correctly your project dependencies and updated the Kotlin plugin to 1.2.
This is normally enough like here but stdlib-jre dependencies were changed to jdk in Kotlin 1.2.
But your project was depending on Realm version 4.3.1, and they fixed this in version 4.3.2.
You can find the dependency causing the issue via commands or the new build tab in AS 3.1.
Extended versions of the Kotlin standard library are explained in documentation and this answer.
If you're targeting JDK 7 or JDK 8, you can use extended versions of the Kotlin standard library which contain additional extension functions for APIs added in new JDK versions.
Instead of
kotlin-stdlib
, use one of the following dependencies:compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7" compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
In Kotlin 1.1.x, use
kotlin-stdlib-jre7
andkotlin-stdlib-jre8
instead.
Update other dependencies, if the automatic resolution doesn't work properly (see point 5).
Revise your Gradle configuration. In order to to build an Android project written in Kotlin:
kotlin-android
gradle plugin and apply it to your project.kotlin-stdlib
dependencies.Those actions may also be performed automatically in IntelliJ IDEA / AS by invoking the action:
Tools | Kotlin | Configure Kotlin in Project
Check for Kotlin plugin updates:
Tools | Kotlin | Configure Kotlin plugin updates
Sirrah commented on 27 Dec 2017 here:
The Kotlin stdlib was renamed during the 1.2.x release. See here.
The old name
kotlin-stdlib-jre7
was changed tokotlin-stdlib-jdk7
.This library is referenced in
realm-library
andkotlin-extensions
.
Update Gradle Wrapper to 4.4.1 and Update to Kotlin 1.2 (#5642)
Update Gradle Wrapper and Update to Kotlin 1.2
kotlin-stdlib-jre7 -> kotlin-stdlib-jdk7
./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath
Since Android Studio 3.1 Beta 1, you can use the new build tab to find the conflictive dependency:
In this case, you removed the warning and fixed the issue updating Realm version to 4.3.2:
It's also possible to check it in Travis-ci builds considering the order dependencies are downloaded:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With