我可以使用标准的Java Scripting API在我的Java 6.x应用程序中嵌入Rhino1_7R4:
ScriptEngine jsEngine = (new ScriptEngineManager()).getEngineByName("JavaScript");
jsEngine.put("object1", object1);
jsEngine.eval(jsScript);
哪个好看又优雅。但是,我无法从我的js代码中调用JSON.stringify
,因为它会抱怨丢失的JSON
对象。
使用org.mozilla.javascript.*
类后,有一些替代方法可以解决一些旧的文档:
Context jsContext = Context.enter();
Scriptable jsScope= jsContext.initStandardObjects();
jsContext.evaluateString(jsScope, jsScript, "myscript.js", 1, null);
...突然JSON
对象就在那里!还有一些其他东西缺失,比如importPackage()函数,所以不要这样:
importPackage(fj.data);
我必须使用别名:
fj = Packages.fj.data;
在我看来,这两种方法都有其缺点。什么是嵌入Rhino并访问其中所有功能的“官方”方式?
答案 0 :(得分:0)
当我运行相同的代码时
Context jsContext = Context.enter();
Scriptable jsScope= jsContext.initStandardObjects();
jsContext.evaluateString(jsScope, jsScript, "myscript.js", 1, null);
Rhino抱怨没有定义JSON。