为什么 NashornScriptEngineFactory 不可能获得仅包含 ClassFilter 和 args 的 ScriptEngine?

Why does NashornScriptEngineFactory haven't the possibility to get a ScriptEngine with only ClassFilter and args?

我目前正在一个项目中使用 Nashorn,我想从 NashornScriptEngineFactory 创建一个 ScriptEngine 只有 ClassFilter 来保护我的脚本以避免意外调用一些图书馆。我还想向工厂添加参数(这里 --strict 以便在严格模式下执行所有 javascript 函数)。

我在 NashornScriptEngineFactory 中只找到了这些原型:

public ScriptEngine getScriptEngine()
public ScriptEngine getScriptEngine(final String... args)
public ScriptEngine getScriptEngine(final ClassFilter classFilter)
public ScriptEngine getScriptEngine(final ClassLoader appLoader)
public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader)
public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter)

不知道为什么没有原型:

public ScriptEngine getScriptEngine(final String[] args, final ClassFilter classFilter)

谁能帮帮我?

在正常、简单的情况下,您通常可以只使用正在调用的 class 的 class 加载程序来获取 ScriptEngine 实例。也就是直接传

即可
this.getClass().getClassLoader()

(或按名称明确引用 class)。只需将其传递给三参数 getScriptEngine() 方法即可。

现在,在不那么正常、不那么简单的情况下,您需要担心多个 class 加载器(有时是 servlet 容器中的问题或 Ant 任务之类的问题) ),那么从哪里获得 class 加载程序可能会有所不同。如果您确实处于这种情况,那么 (A) 祝您好运,并且 (B) 希望您有足够的上下文来知道要传递什么。