关于JavaScript ScriptEngine实现的java文档说,如果没有安全管理器处于活动状态,则可以设置系统属性“rhino.opt.level”。 (“当不使用安全管理器时,可以在[-1,9]范围内定义系统属性”rhino.opt.level“。默认情况下,该值设置为-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();