1. ホーム
  2. gradle

[解決済み] kotlin gradle pluginが1.8ターゲットでビルドできないのはなぜですか?

2022-11-16 19:25:58

質問

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

そして、シンプルなjavaのインターフェイスを持っています。

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 pluginのバグでしょうか?

どのように解決するのですか?

intellijの設定にあるkotlinコンパイラの設定が原因だと判明しました。で Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler という設定に Target JVM version は 1.8 に設定されているはずです。