J'ai le projet gradle le plus simple configuré à l'aide d'intellij pour kotlin 1.2.10. Voici mon fichier 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"
}
Et j'ai une interface java simple:
public interface MyMath {
static int myAbs(int input) {
return Math.abs(input);
}
}
Lorsque j'importe cette interface et que j'essaie d'appeler la myAbs
méthode, cela échoue avec cette erreur:
Error:(6, 12) Kotlin: Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'
J'ai créé une application intellij kotlin et elle fonctionnait correctement. Est-ce un bogue dans le nouveau plugin Kotlin Gradle?
gradle
intellij-idea
kotlin
alisabzevari
la source
la source
Réponses:
Je pense que cela pourrait être utile pour ceux qui utilisent Android Studio 3.2 sur Mac.
Pour changer la version JVM cible du compilateur Kotlin, vous devez aller dans Android Studio -> Préférences -> Compilateur Kotlin, puis changer la version JVM cible en choisissant dans la liste déroulante.
Quoi qu'il en soit, j'obtiens toujours l'erreur suivante
RÉSOLU
L'ajout de ce qui suit à mon build.gradle a résolu le problème:
android { kotlinOptions { jvmTarget = '1.8' } }
À propos de cela et d'autres options de configuration de Gradle: https://kotlinlang.org/docs/reference/using-gradle.html
Avec Kotlin Gradle DSL:
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions (kotlinOptions as KotlinJvmOptions).apply { jvmTarget = JavaVersion.VERSION_1_8.toString() }
la source
app
gradle btw.Il s'est avéré que c'était ma configuration de compilateur kotlin dans les paramètres intellij. Dans
Settings > Build, Execution, Deployment > Compiler > Kotlin Compiler
un paramètre appeléTarget JVM version
aurait dû être défini sur 1.8.la source
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
dans le mien!Project Structure -> Facets -> Kotling -> Target Platform
Veuillez vérifier si vous avez les trois éléments suivants en idée:
kotlinOptions { jvmTarget = '1.8' }
Vérifiez les préférences Idea pertinentes
Vérifiez les facettes du projet
la source
Il existe une propriété gradle utilisée par le plugin Kotlin qui peut être utilisée. Lorsque vous ajoutez
kotlin.setJvmTargetFromAndroidCompileOptions = true
à votre
gradle.properties
dossier. Lorsque vous avez cette configuration sur votrebuild.config
android{ compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } }
le problème doit être résolu.
la source
sourceCompatibility
targetCompatibility
kotlin.setJvmTargetFromAndroidCompileOptions = true
// Ajoutez simplement le code ci-dessous dans votre niveau de construction (Module: app)
compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = "1.8" } }
la source
Vous ne savez pas exactement pourquoi cela fonctionne, mais vous pouvez essayer de modifier le paramètre dans l'idée elle-même. Puisque Gradle à partir de la ligne de commande fonctionne, mais pas lors de la construction à partir d'IntelliJ, il s'agit probablement de la racine.
Allez dans Fichier -> Structure du projet. Accédez à l'onglet Projet et assurez-vous que Project SDK est 8 (ou plus récent) et définissez le
Project language level
sur Java 8La configuration là-dedans semble remplacer Gradle pour une raison quelconque, donc la changer devrait fonctionner
la source
Ceci est également défini dans les paramètres du projet, sous
Project Settings > Modules > Kotlin
. C'était mon problème spécifique ... littéralement la dernière chose que j'ai essayée.la source
Cela a fonctionné pour moi à Gradle avec Kotlin DSL:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile val compileKotlin: KotlinCompile by tasks compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
la source
Dans mon cas, j'ai essayé toutes les options @alisabzevari, y compris celles données en commentaire, mais cela n'a pas fonctionné,
mon erreur j'ai ajouté le fichier java également dans
src/<sourcset_name>kotlin/
dossier, plus tard j'ai converti le fichier java en fichier kotlin. et voila! Ça marche.Peut-être que cela aidera quelqu'un.
la source