使用Gradle在Kotlin上定位JVM 1.8就像
一样简单compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
但如果我只是将jvmTarget
更改为9
或1.9
,那对Java 9无效。我该怎么办?
答案 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