我目前正在项目中使用Nashorn,我想从ScriptEngine
创建一个只有NashornScriptEngineFactory
的{{1}},以保护我的脚本以避免意外调用某些库。我还想为工厂添加参数(这里ClassFilter
以便在严格模式下执行所有javascript函数。)
我在--strict
中找到了这些原型:
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)
任何人都可以帮助我吗?
答案 0 :(得分:2)
在通常的简单情况下,通常只需使用正在进行调用的类的类加载器来获取ScriptEngine
实例。也就是说,你可以传递
this.getClass().getClassLoader()
(或按名称明确引用该类)。只需将其传递给三参数getScriptEngine()
方法。
现在,在不那么正常,不那么简单的情况下,你需要担心多个类加载器(例如,有时在servlet容器中出现问题或类似Ant任务),然后你得到的地方类加载器可能会有所作为。如果你真的处于这种情况,那么(A)祝你好运,(B)希望你有足够的背景来知道要通过什么。