【问题标题】:How to import Java packages in Kotlin Native如何在 Kotlin Native 中导入 Java 包
【发布时间】:2021-03-24 03:32:14
【问题描述】:

我正在尝试导入 Java 包以在 Kotlin 本机中使用,如下所示;

/* main.kt */
import java.util.*

fun main(args: Array<String>) {
    print("Simple program")
}

并使用以下命令编译它

kotlinc main.kt -o main

我收到了错误消息

main.kt:2:8: error: unresolved reference: java
import java.util.*

显然我需要向 kotlinc 显示在哪里可以找到 java.util,如何在不使用命令行的情况下实现这一点?我在使用 Kotlin 本机 0.3 的 Windows 10 64 位上。

【问题讨论】:

    标签: java kotlin


    【解决方案1】:

    您将无法访问 Kotlin Native 中的 Java 包。这个项目的重点是在没有 VM 的情况下运行 Kotlin 代码,因此您无需使用 Java 虚拟机(或库)。但是,您可以改用本机 C 库。您可以找到有关其工作原理的信息here

    来自 Kotlin/Native 第一次预览版的announcement post

    请注意,我们不打算让任意 Kotlin/JVM 程序在 Kotlin/Native 或 Kotlin/JS 上运行。这相当于实现另一个 JVM,这既是大量的工作,也是运行时的许多限制。我们正在采取另一种方式:为所有平台提供通用语言,同时通过与平台代码的无缝互操作性来创建通用库。

    【讨论】:

    • 谢谢。如果我正确理解了您的回答和引用,如果您需要 Java 库中的功能,请使用 JVM,如果您需要本机代码,请为本机找到第三方库或实现您的库,对吗?
    • 是的,如果你想要 Java 库和 Java 生态系统,你应该只使用 JVM。如果你想将 Kotlin 编译成 Native,你可以找到 C 库、Kotlin/Native 库,或者自己实现一些东西。
    • 为什么不能把OpenJDK的Java代码也转成Kotlin?
    【解决方案2】:

    由于我们实际上无法将 JVM-Libs 添加到 Kotlin/Native,正如 zsmb13 已经解释的那样,我想指出 GraalVM(对于那些到达这里但还不知道它的人)。

    https://www.graalvm.org/examples/java-kotlin-aot/

    他们的方法允许在 Kotlin 中使用 java-libs,因为它将所需的 lib- 和 JVM-classes 编译到本机可执行文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2011-12-23
      • 2014-12-17
      • 1970-01-01
      • 2015-10-31
      相关资源
      最近更新 更多