kotlin 1.2.10에 대해 intellij를 사용하여 구성된 가장 간단한 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"
}
그리고 간단한 자바 인터페이스가 있습니다.
public interface MyMath {
    static int myAbs(int input) {
        return Math.abs(input);
    }
}
이 인터페이스를 가져오고 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'
intellij kotlin 앱을 만들었는데 제대로 작동했습니다. 새로운 Kotlin Gradle 플러그인의 버그입니까?
답변
Mac에서 Android Studio 3.2를 사용하는 사람들에게 도움이 될 수 있다고 생각합니다.
Kotlin Compiler Target JVM 버전을 변경하려면 Android Studio-> Preferences-> Kotlin Compiler로 이동 한 다음 드롭 다운에서 선택한 Target JVM 버전을 변경해야합니다.
어쨌든 여전히 다음과 같은 오류가 발생합니다.
Java 인터페이스의 정적 메서드에 대한 호출은 JVM 대상 1.6에서 금지됩니다. ‘-jvm-target 1.8’로 다시 컴파일하십시오.
해결
내 build.gradle에 다음을 추가하면 문제가 해결되었습니다.
android {
    kotlinOptions {
        jvmTarget = '1.8'
    }
}
이것 및 기타 Gradle 구성 옵션 정보 : https://kotlinlang.org/docs/reference/using-gradle.html
Kotlin Gradle DSL 사용 :
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
(kotlinOptions as KotlinJvmOptions).apply {
    jvmTarget = JavaVersion.VERSION_1_8.toString()
}
답변
intellij 설정에서 내 kotlin 컴파일러 구성이라는 것이 밝혀졌습니다. 에서 Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler라는 설정을 Target JVM version1.8로 설정되어 있어야합니다.
답변
답변
사용할 수있는 Kotlin 플러그인에서 사용하는 gradle 속성이 있습니다. 추가 할 때
kotlin.setJvmTargetFromAndroidCompileOptions = true
당신에 gradle.properties파일. 이 구성이있는 경우build.config
android{
  compileOptions {
      sourceCompatibility = 1.8
      targetCompatibility = 1.8
  }
}
해결 될 문제입니다.
답변
// Build gradle (Module : app)에 아래 코드를 추가하기 만하면됩니다.
compileOptions {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = "1.8"
    }
 }
답변
답변
이것은 아래의 프로젝트 설정에서도 설정됩니다 Project Settings > Modules > Kotlin. 이것은 내 특정 문제였습니다. 말 그대로 내가 시도한 마지막 일이었습니다.



