¿Cómo configurar la versión del código de bytes de Kotlin en el proyecto Gradle para Java 8?

En el proyecto Kotlin, ¿cuál es una secuencia de commands de Gradle adecuada para asegurarse de que mis classs se comstackrán en el código byte 52 (Java 8)?

Por alguna razón, mis classs se comstackn como ver 50 (Java 6) aunque configuré la compatibilidad de origen y destino. Al less esto es lo que Idea me muestra cuando abro el file del directory build/classes/... luego de build el proyecto.

Mi configuration actual se ve así.

 buildscript { ext { kotlinVersion = '1.0.5-2' springBootVersion = '1.4.2.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") } } apply plugin: 'kotlin' apply plugin: 'org.springframework.boot' tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } ## I also tried this and it hasn't helped #sourceCompatibility = 1.8 #targetCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}") compile('org.springframework.cloud:spring-cloud-starter-stream-rabbit') } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2" } } 

Como Mark señaló en la respuesta de Debop, debe configurar tanto compileKotlin como compileTestKotlin . Puede hacerlo sin duplicación de esta manera:

 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = "1.8" } } 

Para un proyecto Kotlin puro, no creo que las opciones sourceCompatibility y targetCompatibility hagan nada, por lo que puede eliminarlas.

Ref: https://kotlinlang.org/docs/reference/using-gradle.html#compiler-options

Kotlin 1.1 en Gradle. en la console tiene un error acerca de la inline (su comstackdor instalado es 1.0.x) Si ejecuta la tarea de Gradle en IntelliJ IDEA, su código comstackdo por el comstackdor de Kotlin 1.1

 compileKotlin { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 kotlinOptions { jvmTarget = "1.8" apiVersion = "1.1" languageVersion = "1.1" } } 

Kotlin 1.0 siempre produce files de class Java 6. Kotlin 1.1 admitirá la generación de files de class Java 8 pasando -jvm-target 1.8 al comstackdor. Ver

https://blog.jetbrains.com/kotlin/2016/07/first-glimpse-of-kotlin-1-1-coroutines-type-aliases-and-more/

para una discusión del soporte de Java 7/8.

En caso de que alguien use gradle con kotlin-dsl en lugar de groovy:

 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile // compile bytecode to java 8 (default is java 6) tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" } 

Para cualquier persona como yo que use maven para comstackr el código mixto de kotlin y java en intellij, debes configurar

 <kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget> 

porque maven build no respeta jvmTarget establecido en la configuration del proyecto.

  • Palabra key en línea de Kotlin que causa IntelliJ IDEA Informe de cobertura 0%
  • Kotlin - equivalencia a la combinación de Swift de "if let + cast"
  • El plugin de Android Studio 3.1 Canary 4 Genymotion Emulator falló
  • Combina Java con Kotlin en Android
  • ¿Cómo asignar un nuevo valor si configura el setter como privado en kotlin?
  • Soporte de transición de fragment 25.1.0 con Recyclerview
  • Cómo revertir un map en Kotlin?
  • Convierte doble en ByteArray o Matriz <Byte> Kotlin
  • Kotlin: ¿Pasa y consume una function de 2 parameters?
  • Implementación de la interfaz de Java en Kotlin
  • Kotlin: compilation incremental con Gradle