我正在尝试使用Kotlin V1.2.70,Gradle V4.10.1和Java11。在使用gradle编译项目时,出现错误消息“未知的JVM目标版本:11。支持的版本:1.6、1.8”。
Kotlin编译器是否支持Java 11(产生与Java 11 JVM兼容的代码)?如果是这样,如何使用gradle进行配置?
答案 0 :(得分:16)
当目标版本设置为1.6或1.8时,由Kotlin编译器生成的字节码与JVM 11完全兼容。
答案 1 :(得分:2)
从Kotlin 1.4开始,它支持Java 1.6
(默认),1.8
,9
,10
,11
,12
, 13
和14
-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编译器的未来版本中的其他字节码优化中受益。