¿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.
- La vista de la image no aparece en la Actividad (está bien en AppCompatActivity)
- Operador RxJava para el método de conmutación
- Kotlin RxJava Bug Nullable
- El parámetro especificado como no nulo es nulo cuando se usa Mokito anyObject () en la function Kotlin
- No se puede llamar a StartActivityForResult en Anko
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" } }
- Kotlin: pasar el método array to varargs con el operador spread
- Plantillas que escapan en cadenas multilínea Kotlin
- ¿Cómo puedo inicializar la variable antes de cada testing usando el marco kotlin-test
- Suprima las quejas de Dokka sobre "No hay documentation para com.foo.Bar $ toString ()"?
- Descargar un file desde un control remoto y savelo en un dispositivo Android
- Kotlin mutableMap foreach
- Companion Objects en Kotlin Interfaces
- Traduzca Swift para Kotlin
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
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.