How to add arguments with the ScriptEngineManager method getEngineByName(“nashorn”)?
我正在将Nashorn与Java API 8配合使用。我想确保javascript执行的安全性,以确保代码不会调用Java包。
可能如下:
1 2 | NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); ScriptEngine engine = factory.getScriptEngine("-strict","--no-java","--no-syntax-extensions"); |
但是,直接使用
好的方法是使用
This package provides the javax.script integration, which is the
preferred way to use Nashorn. You will ordinarily do this to obtain an
instance of a Nashorn script engine:
1
2
3 import javax.script.*;
...
ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn");
我没有找到使用
有人能在这件事上帮助我吗?预先谢谢您。
好吧,javax.script是可用于任何脚本语言实现的通用API。按照设计,API根本不提供"引擎配置选项"!
使用Nashorn特定的API的确切问题是什么?您觉得您使用的是引擎特定的API吗?但是,然后您使用的是引擎特定的选项-其他引擎不支持。因此,无论如何,您都必须绑定到特定的引擎实现。
还有另一种系统属性方法来指定Nashorn选项。您可以定义系统属性" nashorn.args"。此属性是进程范围的,因此将由您在Java进程中创建的所有Nashorn引擎使用。
另请参阅:https://wiki.openjdk.java.net/display/Nashorn/Nashorn jsr223引擎说明