【问题标题】:ScriptEngineManager.getEngineFactoriesreturns no factories on appengineScriptEngineManager.getEngineFactories 在 appengine 上不返回任何工厂
【发布时间】:2012-01-04 09:03:09
【问题描述】:

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

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。

我做错了什么?

【问题讨论】:

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


【解决方案1】:

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

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

如果有人知道请编辑。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多