为什么NashornScriptEngineFactory不可能只使用ClassFilter和args获得ScriptE

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

本文关键字:args 获得 ScriptE ClassFilter NashornScriptEngineFactory 不可能 为什么      更新时间:2023-09-26

我目前在一个项目中使用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)

有人能帮我吗?

在正常、简单的情况下,您通常可以使用发出调用的类的类装入器来获取ScriptEngine实例。也就是说,你可以直接传递

this.getClass().getClassLoader()

(或通过名称显式引用类)。只需将其传递给三个参数的getScriptEngine()方法。

现在,在不太正常、不太简单的情况下,您需要考虑多个类装入器(例如,有时是servlet容器或Ant任务中的问题),那么从哪里获取类装入器可能会产生影响。如果你真的遇到这样的情况,那么(a)祝你好运;(B)希望你有足够的背景来知道该传递什么。