jvm Kotlin是否支持Java 11?

pu3pd22g  于 2022-11-07  发布在  Kotlin
关注(0)|答案(4)|浏览(646)

我正在尝试使用KotlinV1.2.70、Gradle V4.10.1和Java 11。在使用gradle编译项目时,出现错误消息“未知JVM目标版本:11.支持的版本:1.6、1.8英寸。
Kotlin编译器是否支持Java 11(生成与Java 11 JVM兼容的代码)?如果支持,如何使用gradle进行配置?

erhoui1w

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字节码指定为目标会导致您提到的错误。
有两种解决方案:

  • 指定1.8作为JVM目标字节码版本。正如@yole在他的回答中所说,这与JVM 11完全兼容。事实上,正如changelog of Kotlin 1.3.30中提到的,较新的JVM目标字节码版本目前没有添加任何超出1.8支持的字节码优化,所以现在确实没有任何区别。
  • 升级到Kotlin1.3.30(或更新版本),您可以保留11作为JVM字节码目标值。这样做的好处是,您将自动受益于未来版本的Kotlin编译器中的额外字节码优化。
plicqrtu

plicqrtu2#

当目标版本设置为1.6或1.8时,Kotlin编译器生成的字节码与JVM 11完全兼容。

3yhwsihp

3yhwsihp3#

自Kotlin1.4起,它支持Java 1.6(默认)、1.891011121314
-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。

sauutmhj

sauutmhj4#

Kotlin官方常见问题解答涵盖此问题:
Kotlin的目标是哪些版本的JVM?
Kotlin允许您选择要执行的JVM版本。默认情况下,Kotlin/JVM编译器生成Java 8兼容的字节码。如果您想使用较新版本的Java中提供的优化,可以显式指定目标Java版本(从9到18)。请注意,在这种情况下,生成的字节码可能无法在较低版本上运行。

相关问题