首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraalVM Polyglot无法加载Java类

GraalVM Polyglot无法加载Java类
EN

Stack Overflow用户
提问于 2019-11-22 13:47:45
回答 1查看 1.8K关注 0票数 0

想从纳什霍恩迁移到GraalVM。已安装的Graal VM

代码语言:javascript
复制
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-jvmci-19.3-b05-LTS)
OpenJDK 64-Bit GraalVM CE 19.3.0 (build 11.0.5+10-jvmci-19.3-b05-LTS, mixed mode, sharing)

测试应用程序

代码语言:javascript
复制
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.HostAccess;

public class Main {
    public static void main(String[] args) {
        Context context = Context.newBuilder("js").allowHostAccess(HostAccess.ALL).build();
        context.eval("js", "var FileClass = Java.type(\"java.io.File\");");
    }
}

例外:

代码语言:javascript
复制
Exception in thread "main" ReferenceError: Java is not defined
    at <js> :program(Unnamed:1:16-19)
    at org.graalvm.sdk/org.graalvm.polyglot.Context.eval(Context.java:370)
    at task.Main.main(Main.java:9)

怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 14:36:36

据我所知,这是正确的选择:

代码语言:javascript
复制
Context context = Context.newBuilder("js")
        .allowHostClassLookup(s -> true)
        .allowHostAccess(HostAccess.ALL)
        .build();

HostAccess.ALL -预定义的主机访问策略,允许完全不受限制地访问公共方法或公共主机类的字段。

...But,我们还需要更改默认过滤器谓词org.graalvm.polyglot.Context#UNSET_HOST_LOOKUP,它返回的始终是false

allowHostClassLookup -默认情况下,如果所有访问都为false,则禁用宿主类查找。

所以,只是没有过滤allowHostClassLookup(s -> true)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58995613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档