In Kotlin project, what is a proper Gradle script to make sure my classes will be compiled to byte code ver 52 (Java 8)?
For some reason my classes are compiled as ver 50 (Java 6) even though I set up source and target compatibility. At least this is what Idea shows me when I open file from directory build/classes/...
after building the project.
My current set up looks like this.
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" } }
Right click on the deploy or any other task and select "Open Gradle Run Configuration..." Then navigate to "Java Home" and paste your desired java path.
Android Gradle plugin 3.0.
A Java version between 8 and 18 is required to execute Gradle. Java 19 and later versions are not yet supported. Java 6 and 7 can still be used for compilation and forked test execution.
As Mark pointed out on Debop's answer, you have to configure both compileKotlin
and compileTestKotlin
. You can do it without duplication this way:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = "1.8" } }
For a pure Kotlin project, I don't think the options sourceCompatibility
and targetCompatibility
do anything, so you may be able to remove them.
Ref: https://kotlinlang.org/docs/reference/using-gradle.html#compiler-options
In case someone uses gradle with kotlin-dsl instead of groovy:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile // compile bytecode to java 8 (default is java 6) tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With