Kotlin与JDK 10

问题描述 投票:0回答:2

最近我将JDK更新为JDK 10,现在我遇到了Kotlin的配置问题,我无法运行我的代码。这是因为JDK 10还是因为其他原因?

我在创建Kotlin项目时从IntelliJ获得的提示:

Configure Kotlin
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk7.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk7-sources.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk8.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk8-sources.jar to library configuration
java intellij-idea kotlin java-10
2个回答
1
投票

在撰写本文时(2018年9月),Kotlin的编译器默认不支持生成Java 9+字节码。

参数-jvm-target 9see KT-21959)应该使Kotlin编译器生成版本53的字节码。

由于Java 10是bytecode version 54reference) - 我不确定这是如何工作的。

仍然:

  • 您可以编译为JVM 8字节码,可以在JVM 9+上正常执行。
  • 如果你想定义模块(或使用需要整个程序模块化的jlink),你今天可以用Java编写module-info.java文件,并放在与Kotlin文件相同的源根目录中。 Kotlin编译器将正确限制依赖模块中非导出包中声明的可访问性。 目前,没有计划支持Kotlin中的模块定义。

除此之外,大多数Java 9-11语言功能(var,REPL,流改进等) - 已经在Kotlin中存在了一段时间,因此使用Java 9-11的主要直接好处是使用JVM进行优化,或模块系统/ jlink(您可以使用上面描述的)


1
投票

version 1.3.30开始,Kotlin现在支持JVM字节码目标9,10,11,12。(KT-26240 - LppEdd提到的票 - 包括在内。)

© www.soinside.com 2019 - 2024. All rights reserved.