I have a Kotlin project in Android Studio. I am calling a static method in Java interface from the Kotlin code. The build fails with the error,
Calls to static m
I am able to resolve this by adding below block as my build.gradle is not in dsl. To set the target JVM version for the Kotlin compiler, use the following block:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
Proper way to set Kotlin compile options in android gradle. Make these changes to your app level Build.gradle
Change
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
to
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
Then write this task
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
kotlinOptions {
jvmTarget = '1.8'
apiVersion = '1.1'
languageVersion = '1.1'
}
}
just below(not necessarily)
repositories {
mavenCentral()
}
For details, refer here
The compileOptions
section in build.gradle affects the Java compiler, not the Kotlin compiler. To set the target JVM version for the Kotlin compiler, use the following block:
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
See the documentation for more information.
I had the same problem because I had a folder for the integration tests different than the unit test folder. So the build.gradle needs more configuration:
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
//added this
compileIntegrationTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}