0

这是通过 GraalVM CE 21.3.0 的 JavaScrupt 解释器外壳完成的。

尝试访问某些 Java 类,例如java.io.File导致此错误:

TypeError: Access to host class java.io.File is not allowed or does not exist.

在没有任何选项的情况下运行 shell 时,需要这么多才能得到错误:

new java.io.File()

--js.java-package-globals=false只需要这么多运行 shell 时:

Java.type("java.io.File")

我该如何解决这个问题?如果应该提供这些功能,那么为什么它们不能开箱即用?

4

1 回答 1

0

我假设您缺少在Java 互操作所需的模式下运行启动器的--jvm标志。jsjvm

$ ./graalvm-ee-java11-21.3.0/bin/js --eval 'new java.io.File(""); console.log("OK!")'
TypeError: Access to host class java.io.File is not allowed or does not exist.
        at <js> :program(Unknown)

$ ./graalvm-ee-java11-21.3.0/bin/js --jvm --eval 'new java.io.File(""); console.log("OK!")'
OK!

这记录在这里

要启用 Java 互操作性,必须将 --jvm 选项提供给本机启动器

于 2022-01-04T13:03:16.280 回答