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