繁体   English   中英

从脚本调用JavaScript解释器

[英]Call javascript interpreter from a script

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

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

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

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

我该如何获得Rhino引擎呢? 我需要ScriptEngineManager.getEngineFactories()还是其他工具?

您要实现的是选择实现“ JavaScript”的特定版本的脚本引擎。 正确的方法是调用ScriptEngineManager.getEngineFactories() ,然后检查getLanguageName()getEngineVersion()

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

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

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

在调用初始脚本之前,为什么不在脚本中将要使用的引擎设置为上下文变量呢? 这样,在脚本中,您可以访问运行该脚本的引擎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM