4

以下代码返回一个空数组。

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

ScriptEngineManager manager = new ScriptEngineManager();
List<ScriptEngineFactory> factories = manager.getEngineFactories();

它在开发环境中工作,但未部署。
即使将rhino中的 js.jar 添加到 lib 文件夹并将其添加到类路径中,也找不到 EngineFactories。

我究竟做错了什么?

4

2 回答 2

3

GAE 是一个非常优化的 Java 运行时。即使 ScriptEngineManager 在支持的类的白名单中,仍然有一个设置可以让它工作。

你需要注册 Rhino 服务,我有存档的线索,但不完全。要注册服务,您必须创建文件“META-INF/services/javax.script.ScriptEngineFactory”,其中一行包含实现“ScriptEngineFactory”接口的Rhino 类的确切类名。我的问题是我找不到这些课程。

如果有人知道请编辑。

于 2013-11-08T00:34:38.167 回答
0

是的,Daniel 是对的,您需要使用另一个 JavaScript 引擎,例如 Rhino。我已经为类似的问题提出了一个可能的解决方案(它建立在Harsha R给出的解决方案的基础上): https ://stackoverflow.com/a/28408123/578821

于 2015-02-09T11:01:46.553 回答