首页 > 解决方案 > Kotlin 是否支持 Java 11?

问题描述

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

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

标签: gradlekotlinjvm

解决方案


Kotlin 编译器支持 JVM 9、10、11 和 12 字节码版本作为 Kotlin 1.3.30 ( changelog ) 以来的目标。

在 1.3.30 之前,仅支持 JVM 1.6 和 1.8 字节码版本作为目标。由于您使用的是 1.2.70,因此将 JVM 11 字节码指定为目标会导致您提到的错误。

有两种解决方案:

  • 指定 1.8 作为 JVM 目标字节码版本。正如@yole 在他的回答中所说,这与 JVM 11 完全兼容。事实上,正如Kotlin 1.3.30 的更改日志中所述,较新的 JVM 目标字节码版本目前不添加任何超出 1.8 支持的字节码优化,所以无论如何现在它真的没有任何区别。

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


推荐阅读