Kotlin JDK 10
Kotlin with JDK 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
在撰写本文时(2018 年 9 月)Kotlin 的编译器默认不支持生成 Java 9+ 字节码。
参数 -jvm-target 9
(see KT-21959) 应该使 Kotlin 编译器生成版本 53 的字节码。
因为 Java 10 是 bytecode version 54
(reference) - 我不确定这将如何工作。
仍然:
可以编译成JVM 8字节码,JVM 9+可以正常执行。
如果你想定义模块(或者使用jlink需要整个程序模块化)你今天可以在Java中写module-info.java
个文件,并且放置在与 Kotlin 文件相同的源根目录中。
- Kotlin 编译器将正确限制依赖模块中非导出包中声明的可访问性。
- 目前,没有计划在 Kotlin 中支持模块定义。
除此之外,大多数 Java 9-11 语言特性(var、REPL、流改进等)- 在 Kotlin 中已经存在了一段时间,因此使用 [=42 的主要直接好处=] 9-11 正在使用 JVM 进行优化,或模块系统/jlink(您可以按上述方式使用)
从 version 1.3.30 Kotlin now supports JVM bytecode targets 9, 10, 11, 12. (KT-26240 开始 - LppEdd 提到的门票 - 包含在内。)
最近我将我的 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
在撰写本文时(2018 年 9 月)Kotlin 的编译器默认不支持生成 Java 9+ 字节码。
参数 -jvm-target 9
(see KT-21959) 应该使 Kotlin 编译器生成版本 53 的字节码。
因为 Java 10 是 bytecode version 54
(reference) - 我不确定这将如何工作。
仍然:
可以编译成JVM 8字节码,JVM 9+可以正常执行。
如果你想定义模块(或者使用jlink需要整个程序模块化)你今天可以在Java中写
module-info.java
个文件,并且放置在与 Kotlin 文件相同的源根目录中。- Kotlin 编译器将正确限制依赖模块中非导出包中声明的可访问性。
- 目前,没有计划在 Kotlin 中支持模块定义。
除此之外,大多数 Java 9-11 语言特性(var、REPL、流改进等)- 在 Kotlin 中已经存在了一段时间,因此使用 [=42 的主要直接好处=] 9-11 正在使用 JVM 进行优化,或模块系统/jlink(您可以按上述方式使用)
从 version 1.3.30 Kotlin now supports JVM bytecode targets 9, 10, 11, 12. (KT-26240 开始 - LppEdd 提到的门票 - 包含在内。)