从脚本调用javascript解释器

时间:2009-11-30 13:53:05

标签: java javascript scripting rhino

我在Rhino 1.7下用Javascript编写了一些脚本,其中一个启动了一个最小的http服务器并在输入中接受了JS命令。

现在,如果我打电话(来自Rhino内):

engine = ScriptEngineManager().getEngineByName("JavaScript");

我得到了内置的JS引擎(来自Java 1.6),这是Rhino的旧版本,并且缺少一些函数(比如用于多个接口的JavaAdapter)。

我如何获得Rhino Engine而不是那个?我需要ScriptEngineManager.getEngineFactories()还是其他什么?

3 个答案:

答案 0 :(得分:1)

您想要实现的是选择实现“JavaScript”的特定版本的脚本引擎。正确的方法是拨打ScriptEngineManager.getEngineFactories(),然后查看getLanguageName()getEngineVersion()的结果。

答案 1 :(得分:1)

我自己发现了(反复试验)。如上所述,Rhino没有注册发动机工厂。您可以获取当前引擎(作为上下文和可编写脚本的对象):

cx = Context.getCurrentContext();
scope = new ImporterTopLevel(cx);

使用这些对象,我可以使用evalString / evalReader运行我的脚本或命令行。

答案 2 :(得分:0)

在调用初始脚本之前,为什么不在脚本中设置您用作上下文变量的引擎?这样,在脚本内部,您就可以访问正在运行它的引擎。