Android Studio throws build error in Kotlin project which calls static method in java interface

天涯浪子 提交于 2020-02-01 21:34:23

问题


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 methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'

I have the following in my build.gradle,

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

I have also changed the Target JVM version to 1.8 in Kotlin compiler settings. Still, the build throws the error. Also tried Invalidating cache and restarting.

Android Studio version: 3.0.1


回答1:


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




回答2:


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.




回答3:


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"
}


来源:https://stackoverflow.com/questions/48953039/android-studio-throws-build-error-in-kotlin-project-which-calls-static-method-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!