У меня есть самый простой проект Gradle, настроенный с использованием intellij для kotlin 1.2.10. Вот мой файл 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?
gradle
intellij-idea
kotlin
Алисабзевари
источник
источник
Ответы:
Я думаю, это может быть полезно для тех, кто использует Android Studio 3.2 на Mac.
Чтобы изменить версию целевой JVM компилятора Kotlin, перейдите в Android Studio -> Настройки -> Компилятор Kotlin, а затем измените целевую версию JVM, выбрав из раскрывающегося списка.
В любом случае, я все еще получаю следующую ошибку
Решено
Добавление следующего в мой 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() }
источник
app
кстати, градл.Оказалось, что это была моя конфигурация компилятора kotlin в настройках intellij. В
Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler
вызываемой настройкеTarget JVM version
должно быть установлено значение 1,8.источник
Settings -> Other Settings -> Kotlin Compiler -> Target JVM Version
Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'
Other Settings
в моем!Project Structure -> Facets -> Kotling -> Target Platform
Пожалуйста, проверьте, есть ли у вас в идее следующие три вещи:
kotlinOptions { jvmTarget = '1.8' }
Проверьте соответствующие предпочтения Идеи
Проверьте проект Facets
источник
В плагине Kotlin есть свойство gradle, которое можно использовать. Когда вы добавляете
kotlin.setJvmTargetFromAndroidCompileOptions = true
в ваш
gradle.properties
файл. Когда у вас есть эта конфигурация на вашемbuild.config
android{ compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } }
проблема должна быть решена.
источник
sourceCompatibility
иtargetCompatibility
настроен, но добавлениеkotlin.setJvmTargetFromAndroidCompileOptions = true
решенной для меня проблемы// Просто добавьте приведенный ниже код в свой градиент сборки (Module: app)
compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = "1.8" } }
источник
Не совсем уверен, почему это работает, но вы можете попробовать изменить настройку в самой идее. Поскольку Gradle из командной строки работает, но не при сборке из IntelliJ, это, вероятно, корень.
Перейдите в Файл -> Структура проекта. Перейдите на вкладку Project и убедитесь, что Project SDK 8 (или новее), и установите
Project language level
Java 8.Кажется, что конфигурация там по какой-то причине переопределяет Gradle, поэтому ее изменение должно работать
источник
Это также устанавливается в настройках проекта в разделе
Project Settings > Modules > Kotlin
. Это была моя конкретная проблема ... буквально последнее, что я пробовал.источник
Это сработало для меня в Gradle с Kotlin DSL:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile val compileKotlin: KotlinCompile by tasks compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
источник
В моем случае я попробовал все параметры @alisabzevari, включая указанные в комментарии, но это не сработало,
моя ошибка Я добавил файл java также в
src/<sourcset_name>kotlin/
папку, позже я преобразовал файл java в файл kotlin. и вуаля! Оно работает.Может быть, это кому-нибудь поможет.
источник