ali*_*ari 56 intellij-idea gradle kotlin
我有使用intellij为kotlin 1.2.10配置的最简单的gradle项目.这是我的build.gradle文件:
buildscript {
ext.kotlin_version = '1.2.10'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
group 'com.ali'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'kotlin'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的java界面:
public interface MyMath {
static int myAbs(int input) {
return Math.abs(input);
}
}
Run Code Online (Sandbox Code Playgroud)
当我导入此接口并尝试调用myAbs方法时,它失败并显示以下错误:
Error:(6, 12) Kotlin: 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)
我创建了一个intellij kotlin应用程序,它工作正常.这是新Kotlin gradle插件中的错误吗?
Jai*_*ano 105
我认为这对那些在Mac上使用Android Studio 3.2的用户有帮助.
要更改Kotlin Compiler Target JVM版本,您应该转到Android Studio - > Preferences - > Kotlin Compiler,然后从下拉列表中选择Target JVM版本.
无论如何,我仍然收到以下错误
JVM目标1.6中禁止在Java接口中调用静态方法.用'-jvm-target 1.8'重新编译
解决了
将以下内容添加到我的build.gradle中解决了以下问题:
android {
kotlinOptions {
jvmTarget = '1.8'
}
}
Run Code Online (Sandbox Code Playgroud)
关于此和其他Gradle配置选项:https://kotlinlang.org/docs/reference/using-gradle.html
ali*_*ari 49
事实证明,这是我在intellij设置中的kotlin编译器配置.在Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler一个名为Target JVM versionshould 的设置中应该设置为1.8.
Kar*_*aka 23
可以使用 Kotlin 插件使用的 gradle 属性。当你添加
kotlin.setJvmTargetFromAndroidCompileOptions = true
Run Code Online (Sandbox Code Playgroud)
到您的gradle.properties文件。当你有这个配置时build.config
android{
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
Run Code Online (Sandbox Code Playgroud)
问题应该可以解决。
小智 13
// 只需在您的 Build gradle(Module:app) 中添加以下代码
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
Run Code Online (Sandbox Code Playgroud)
请检查您是否设定了以下三个方面:
kotlinOptions {
jvmTarget = '1.8'
}
Run Code Online (Sandbox Code Playgroud)
这对我在 Gradle 中使用 Kotlin DSL 有用:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19175 次 |
| 最近记录: |