我已经读到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的发行版本.