如何使用Gradle在Kotlin上定位JVM 9?

时间:2017-11-12 13:01:57

标签: gradle kotlin

使用Gradle在Kotlin上定位JVM 1.8就像

一样简单
compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

但如果我只是将jvmTarget更改为91.9,那对Java 9无效。我该怎么办?

2 个答案:

答案 0 :(得分:5)

Kotlin目前仅针对Java 6和8

请参阅此处的常见问题解答https://kotlinlang.org/docs/reference/faq.html#does-kotlin-only-target-java-6

目前正在说

  

Kotlin只针对Java 6吗?   不,Kotlin允许您在生成Java 6和Java 8兼容字节码之间进行选择。可以为更高版本的平台生成更优的字节代码。

编辑:

所以...因为它是kotlin生成它的字节码的兼容性并不意味着修复了你需要使用的Java版本。

这是一个gradle文件,让你使用Java 11和kotlin生成兼容Java 8的字节码

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.2.71'
}

group 'com.dambra.paul.string-calculator'
version '0.0.0'

sourceCompatibility = 11.0

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(
            'org.junit.jupiter:junit-jupiter-api:5.1.0'
    )
    testRuntimeOnly(
            'org.junit.jupiter:junit-jupiter-engine:5.1.0'
    )
    testCompile("org.assertj:assertj-core:3.11.1")
    testCompile 'org.junit.jupiter:junit-jupiter-params:5.1.0'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
compileTestKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

你不能用Kotlin“瞄准jvm 9”。但是你可以和Kotlin一起写Java(9 | 10 | 11 | etc)

答案 1 :(得分:1)

有关属性jvmTarget的可能值,请参见Kotlin "Using Gradle" reference "Attributes specific for the JVM"

  

名称:jvmTarget

     

描述:生成的JVM字节码的目标版本(1.6、1.8、9、10、11或12),默认为1.6

     

可能的值:“ 1.6”,“ 1.8”,“ 9”,“ 10”,“ 11”,“ 12”

     

默认值:“ 1.6”

     

已复制2019/10/01