Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ScriptEngineManager方法getEngineByName(“nashorn”)添加参数?_Java_Java 8_Nashorn_Scriptengine - Fatal编程技术网

Java 如何使用ScriptEngineManager方法getEngineByName(“nashorn”)添加参数?

Java 如何使用ScriptEngineManager方法getEngineByName(“nashorn”)添加参数?,java,java-8,nashorn,scriptengine,Java,Java 8,Nashorn,Scriptengine,我将Nashorn与JavaAPI8一起使用。我想确保javascript执行的安全,以确保代码不能调用Java包 可能的情况如下: NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); ScriptEngine engine = factory.getScriptEngine("-strict", "--no-java", "--no-syntax-extensions"); 但是,直接使用Nashorn

我将Nashorn与JavaAPI8一起使用。我想确保javascript执行的安全,以确保代码不能调用Java包

可能的情况如下:

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine("-strict", "--no-java", "--no-syntax-extensions");
但是,直接使用
NashornScriptEngineFactory
并不是很好

最好的方法是使用
ScriptEngineManager
NashornScriptEngineFactory
ScriptEngineManager
用来制作
ScriptEngine
实例的工厂。这方面的解释如下:

这个包提供javax.script集成,它是 使用Nashorn的首选方式。您通常会这样做以获得 Nashorn脚本引擎的实例:

import javax.script.*;
...
ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn");
我没有找到使用
ScriptEngineManager
创建
ScriptEngine
的解决方案,它能够提供一些额外的参数,如
“-strict”、“-no java”、“-no syntax extensions”


在这件事上有人能帮我吗?提前感谢。

好吧,javax.script是用于任何脚本语言实现的通用API。按照设计,API根本不提供“引擎配置选项”

使用特定于Nashorn的API的确切问题是什么?您是否觉得您正在使用特定于引擎的API?但是您使用的是特定于引擎的选项,其他引擎不支持这些选项。因此,无论如何,您都与特定的引擎实现相关联

还有另一种指定Nashorn选项的系统属性方法。您可以定义系统属性“nashorn.args”。此属性是进程范围的,因此将由Java进程中创建的所有Nashorn引擎使用

另请参见:

我将使用-Dnashorn.args=“-strict--no-java--no-syntax extensions”。我更喜欢继续使用java脚本api。即使有一天我改变了我使用的脚本语言,仅仅改变配置也比改变java代码更容易。谢谢你的帮助。