gradle - 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 进行配置?
解决方案
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 编译器未来版本中额外的字节码优化。
推荐阅读
- java - 有没有办法避免不同背景的重复 Cucumber 场景?
- javascript - 将我的 Chrome 扩展程序中的表单数据写入 Google 表格
- python - Pandas Dataframe 多索引
- scala - Scala 等价于 Java 的 Number 和 divide 方法
- kotlin - Kotlin DSL - 联合结构
- isabelle - 如何使用 fmmap_keys 定义函数的终止顺序?
- elasticsearch - 如何在 ES 6.4 中使用新的 Java Api 重新索引?
- angular - Angular——今天的日期和从 API 返回的日期之间的差异
- firebase - 确保 Firebase 托管链接只能从特定 IP 访问
- python - linux - 信号未传递给多命令