如何为单个引擎实例设置Java-8 Nashorn Javascript引擎选项

我已经读到Nashorn支持某些选项,但似乎是all of them are undocumented.

可以通过设置系统属性来使用它们,但是它们是全局的.我想以编程方式为单个引擎实例设置它们.

Here you can read可以以我想要的方式指定选项,但是类是内部的,因此出现这种错误:

"Access restriction: The type NashornScriptEngineFactory is not accessible due to restriction on required library C:\Program Files\Java\jdk1.8.0\jre\lib\ext\nashorn.jar".

我找不到用Java脚本API设置这些选项的方法.

编辑:

看来问题是日食保护我免于使用内部类,而不是使用nashorn并非完全是问题,但我将具体说明这个问题.

有没有一种方法可以设置单个nashorn引擎实例的选项,而无需使用不属于javax.script API的nashorn类?

解决方法:

以下程序为我成功运行:

import javax.script.*;
import jdk.nashorn.api.scripting.*;
public class NashTest {
    public static void main(String[] args) throws ScriptException {
        NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
        ScriptEngine engine = 
            factory.getScriptEngine(new String[] { "--global-per-engine" });
        engine.eval("java.lang.System.out.println('hello world!')");
    }
}

确保您使用的是JRE / JDK 8的发行版本.

上一篇:Java 8 新特性


下一篇:如何从nashorn访问Java对象函数