NashornScriptEngineFactory

NashornScriptEngineFactory

我当前在一个项目中使用Nashorn,并且我想仅用ScriptEngineNashornScriptEngineFactory创建一个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)希望您有足够的背景知识来知道该怎么做。

08-03 18:06