我正在尝试使用KotlinV1.2.70、Gradle V4.10.1和Java 11。在使用gradle编译项目时,出现错误消息“未知JVM目标版本:11.支持的版本:1.6、1.8英寸。Kotlin编译器是否支持Java 11(生成与Java 11 JVM兼容的代码)?如果支持,如何使用gradle进行配置?
erhoui1w1#
自Kotlin 1.3.30(changelog)起,Kotlin编译器支持JVM 9、10、11和12字节码版本作为目标。在1.3.30之前,仅支持JVM 1.6和1.8字节码版本作为目标。由于您使用的是1.2.70,因此将JVM 11字节码指定为目标会导致您提到的错误。有两种解决方案:
plicqrtu2#
当目标版本设置为1.6或1.8时,Kotlin编译器生成的字节码与JVM 11完全兼容。
3yhwsihp3#
自Kotlin1.4起,它支持Java 1.6(默认)、1.8、9、10、11、12、13和14-jvm-target指定生成的JVM字节码的目标版本。可能的值为1.6,1.8,9,10,11,12,13和14。默认值为1.6。https://kotlinlang.org/docs/reference/compiler-reference.html#-jvm-target-version是的,它完全支持Java 11。
1.6
1.8
9
10
11
12
13
14
sauutmhj4#
Kotlin官方常见问题解答涵盖此问题:Kotlin的目标是哪些版本的JVM?Kotlin允许您选择要执行的JVM版本。默认情况下,Kotlin/JVM编译器生成Java 8兼容的字节码。如果您想使用较新版本的Java中提供的优化,可以显式指定目标Java版本(从9到18)。请注意,在这种情况下,生成的字节码可能无法在较低版本上运行。
4条答案
按热度按时间erhoui1w1#
自Kotlin 1.3.30(changelog)起,Kotlin编译器支持JVM 9、10、11和12字节码版本作为目标。
在1.3.30之前,仅支持JVM 1.6和1.8字节码版本作为目标。由于您使用的是1.2.70,因此将JVM 11字节码指定为目标会导致您提到的错误。
有两种解决方案:
plicqrtu2#
当目标版本设置为1.6或1.8时,Kotlin编译器生成的字节码与JVM 11完全兼容。
3yhwsihp3#
自Kotlin1.4起,它支持Java
1.6
(默认)、1.8
、9
、10
、11
、12
、13
和14
-jvm-target指定生成的JVM字节码的目标版本。可能的值为1.6,1.8,9,10,11,12,13和14。默认值为1.6。
https://kotlinlang.org/docs/reference/compiler-reference.html#-jvm-target-version
是的,它完全支持Java 11。
sauutmhj4#
Kotlin官方常见问题解答涵盖此问题:
Kotlin的目标是哪些版本的JVM?
Kotlin允许您选择要执行的JVM版本。默认情况下,Kotlin/JVM编译器生成Java 8兼容的字节码。如果您想使用较新版本的Java中提供的优化,可以显式指定目标Java版本(从9到18)。请注意,在这种情况下,生成的字节码可能无法在较低版本上运行。