首页 > 解决方案 > ScriptEngine 的 JDK16 问题(使用 Graal)

问题描述

这是我的代码示例,它在第 67 行给了我一个脚本引擎错误(这就是 engine.eval("load . . . . . . 现在读完它说我应该给所有访问权限(我知道这是在受保护)。这样做的最佳方式或方法是什么?

(显然,这段代码还有更多内容,但这就是我遇到的问题。)

    protected Invocable getInvocable(String path, Client c, boonlean npc) {
    FileReader fr = null;
    try {
        path = "scripts/" + path;
            ScriptEngine engine = null;

            if (c != null) engine = c.getScriptEngine(path);
            if (npc) System.out.println(path);
            
            if (engine == null) {
                File scriptFile = new File(path);
                if (!scriptFile.exists())  return null;
                
                engine = sem.getEngineByName("graal.js");
                if (c != null) c.setScriptEngine(path, engine);
                fr = new FileReader(scriptFile);
                engine.eval("load('nashorn:mozilla_compat.js');" + System.lineSeparator());
                    engine.eval(fr);
                  }
            else if (c != null && npc) {
            c.removeClickedNPC();
            NPCScriptManager.getInstance().dispose(c);
            c.getSession().write(CWvsContext.enableActions());
            return null;
            }
            return (Invocable) engine;

它确实说我没有使用 import org.graalvm.polyglot.Context; 注意:我一直使用旧版本的 java,所以不熟悉实现新版本的方法。我尝试了在线方法,但不确定我做错了什么。

标签: java

解决方案


推荐阅读