以下代码返回一个空数组。
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。
我做错了什么?
答案 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