Kotlin是否支持Java 11?

时间:2018-10-19 08:13:18

标签: gradle kotlin jvm

我正在尝试使用Kotlin V1.2.70,Gradle V4.10.1和Java11。在使用gradle编译项目时,出现错误消息“未知的JVM目标版本:11。支持的版本:1.6、1.8”。

Kotlin编译器是否支持Java 11(产生与Java 11 JVM兼容的代码)?如果是这样,如何使用gradle进行配置?

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:2)

从Kotlin 1.4开始,它支持Java 1.6(默认),1.891011121314

-jvm-目标 指定生成的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。

答案 2 :(得分:1)

从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版本支持的字节码优化,因此无论如何,它现在真的没有任何区别。

  • 升级到Kotlin 1.3.30(或更高版本),则可以保留11作为JVM字节码目标值。优点是您将自动从Kotlin编译器的未来版本中的其他字节码优化中受益。