ScriptEngineManager.getEngineFactories在appengine上没有工厂

时间:2011-11-23 00:43:22

标签: java google-app-engine scripting rhino javax.script

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

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。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

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

如果有人知道请编辑。

答案 1 :(得分:0)

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