为什么 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) 希望您有足够的上下文来知道要传递什么。
我目前正在一个项目中使用 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) 希望您有足够的上下文来知道要传递什么。