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

时间:2018-02-23 17:14:45

标签: android android-studio kotlin

我在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'

Error

我的 build.gradle

中有以下内容
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

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

Kotlin Compiler Settings

Android Studio版本:3.0.1

3 个答案:

答案 0 :(得分:6)

在android gradle中设置Kotlin编译选项的正确方法。 对您的应用级别 Build.gradle

进行这些更改

更改

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

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"

然后编写此任务

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

就在下面(不一定)

repositories {
    mavenCentral()
}

有关详细信息,请参阅here

答案 1 :(得分:0)

我遇到了同样的问题,因为我的集成测试文件夹不同于单元测试文件夹。因此,build.gradle需要更多配置:

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
} 
//added this
compileIntegrationTestKotlin {
  kotlinOptions.jvmTarget = "1.8"
}

答案 2 :(得分:0)

我可以通过添加以下代码块来解决此问题,因为我的build.gradle不在dsl中。要为Kotlin编译器设置目标JVM版本,请使用以下代码段:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}