[英]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.