Android Studio在Kotlin项目中抛出构建错误,该项目在java接口中调用静态方法

Raj*_*Raj 8 android kotlin android-studio

我在Android Studio中有一个Kotlin项目.我在Kotlin代码中调用Java接口中的静态方法.构建失败并出现错误,

Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'
Run Code Online (Sandbox Code Playgroud)

错误

我在build.gradle中有以下内容,

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

我还在Kotlin编译器设置中将Target JVM版本更改为1.8.仍然,构建会引发错误.还尝试使缓存失效并重新启动.

Kotlin编译器设置

Android Studio版本:3.0.1

Deb*_*jan 8

在android gradle中设置Kotlin编译选项的正确方法.对您的应用程序级别Build.gradle进行这些更改

更改

实现"org.jetbrains.kotlin:kotlin-stdlib-jre7:$ kotlin_version"

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
Run Code Online (Sandbox Code Playgroud)

然后写这个任务

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'
    }
}
Run Code Online (Sandbox Code Playgroud)

就在下面(不一定)

repositories {
    mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

有关详情,请参阅此处


yol*_*ole 5

compileOptionsbuild.gradle 中的部分影响 Java 编译器,而不是 Kotlin 编译器。要为 Kotlin 编译器设置目标 JVM 版本,请使用以下块:

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档