Kotlin与JDK 10

时间:2018-09-29 17:41:08

标签: java intellij-idea kotlin java-10

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

还是:

  • 您可以编译为可以在JVM 9+上正常执行的JVM 8字节码。

  • 如果您想定义模块(或使用需要对整个程序进行模块化的jlink),则可以立即用Java编写module-info.java文件,并将其放置在与Kotlin相同的源根目录中文件。

    • Kotlin编译器将正确限制从属模块中非导出包中声明的可访问性。
    • 当前,还没有计划在Kotlin中支持模块定义。

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

答案 1 :(得分:1)

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