【问题标题】:Is it possible to call Kotlin from JavaScript via Graal?是否可以通过 Graal 从 JavaScript 调用 Kotlin?
【发布时间】:2021-07-23 23:19:14
【问题描述】:

这行得通

var NodeTransformerClass = Java.type('com.fispan.crypto.api.java.NodeTransformer');
var nodeTransformer = new NodeTransformerClass();
var result = nodeTransformer.protect(customer, specification);

但是这个

var KotlinTransformerClass = Java.type('com.fispan.crypto.api.kotlin.NodeTransformer');
var kotlinTransformer = new KotlinTransformerClass();
var kotlinResult = kotlinTransformer.protect(customer, specification);

生产

unknown:0
unknown
^

[Error: kotlin/jvm/internal/Intrinsics]

我是否正确地假设无法直接从 JavaScript/Node/js 调用 Kotlin?

另外,如果你调用 Node.js -> Java -> Kotlin,你会得到同样的信息。

如果调用链中有任何 Kotlin 代码,我假设无法从 Node.js 调用 JVM 是否正确? Scala 或任何其他 JVM 是否也是如此语言? ????

如果是这样,这会让 GraalVM 完全不适合我们的需求吗? ????

另见https://github.com/oracle/graaljs/issues/484

【问题讨论】:

    标签: javascript node.js kotlin graalvm


    【解决方案1】:

    好的,终于想通了……我的 Graal 节点 classpath 上没有完整的 JAR。 Java 可以正常工作,因为 Java 运行时会自动包含在内,但 Kotlin 运行时不会。

    我的解决方案是使用 Gradle shadow 插件来构建一个完整的 JAR。一旦我这样做了,Node.js 可以调用 Java,Java 可以调用 Kotlin。

    另见 fat-JAR 和 uber-JAR

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多