Почему плагин kotlin gradle не может строить с целью 1.8?

у меня есть самый простой проект gradle, настроенный с помощью intellij для kotlin 1.2.10. Вот мое телосложение.файл 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?

3 ответов


оказалось, что это была моя конфигурация компилятора kotlin в настройках intellij. В Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler параметр Target JVM version должно быть установлено значение 1.8.


Не совсем уверен, почему это работает, но вы можете попробовать изменить настройку в самой идее. Поскольку Gradle из командной строки работает, но не при построении из IntelliJ это, вероятно, корень.

перейдите в файл - > структура проекта. Перейдите на вкладку проект и убедитесь, что Project SDK 8 (или новее) и установите Project language level на Java 8

enter image description here

конфигурация там, кажется, переопределяет Gradle по какой-то причине, поэтому ее изменение должно работа


пока не могу добавить комментарии из-за отсутствия репутации... Но я думаю, что это может быть полезно для тех, кто использует Android Studio 3.2 на Mac.

чтобы изменить целевую версию JVM компилятора Kotlin, вы должны перейти в Android Studio -> Preferences -> Kotlin Compiler, а затем изменить целевую версию JVM, выбрав из раскрывающегося списка.

в любом случае, я все еще получаю следующую ошибку

вызовы статических методов в интерфейсах Java запрещены в Целевой JVM 1.6. Перекомпилируйте с'-jvm-target 1.8'

решить

добавление следующего в мою сборку.Gradle, а внутри android раздел решил проблему:

kotlinOptions{
    jvmTarget = '1.8'
}