我在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'
我的 build.gradle ,
中有以下内容compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
我还在Kotlin编译器设置中将Target JVM版本更改为1.8。仍然,构建会引发错误。还尝试使缓存失效并重新启动。
Android Studio版本:3.0.1
答案 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"
}
}