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

MrP*_*PNG 10 gradle kotlin

使用Gradle在Kotlin上定位JVM 1.8非常简单

compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是改变jvmTargetto 9或者,那对Java 9不起作用1.9.我该怎么做?

Pau*_*bra 8

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"
    }
}
Run Code Online (Sandbox Code Playgroud)

您不能使用Kotlin来“定位jvm 9”。但是,您可以将Kotlin与Java一起编写(9 | 10 | 11 | etc)


小智 5

有关属性的可能值,请参阅Kotlin“使用 Gradle”参考“JVM 特定的属性” jvmTarget

姓名: 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