关于 JavaScript ScriptEngine 实现的 java 文档说,如果没有活动的安全管理器,可以设置系统属性“rhino.opt.level”。(“当不使用安全管理器时,系统属性“rhino.opt.level”可以在 [-1, 9] 范围内定义。默认情况下,该值设置为 -1,表示禁用优化器。”,请参见http://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/#jsengine )
我现在的问题是,如何做到这一点。我尝试将其设置为环境变量并在代码中使用
System.setProperty("rhino.opt.level", "9");
但它对编译的脚本没有任何影响。是否需要将命令行参数传递给 jvm 或类似的东西?
编辑:我的测试代码:
String script = IOUtil.readTextFile("test.js", "UTF-8"); // reads the file's content
System.setProperty("rhino.opt.level", "9");
final ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");
Compilable compiler = (Compilable) scriptEngine;
CompiledScript cs = compiler.compile(script);
cs.eval();