【发布时间】:2013-04-14 00:32:42
【问题描述】:
我正在尝试从 Java 执行 Javascript 代码。 Javascript 代码使用 jquery,所以我在我的代码之前添加了 jquery.js。但它会引发以下异常,
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "window" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
当我从 Java 代码运行此程序时,我了解到它无权访问窗口对象,因此出现上述异常。我发现 EnvJs 提供了所需环境的实现,所以我尝试通过将其内容放在首位来加载它,同时将脚本内容生成到 eval。但遇到以下异常,
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call property getCurrentContext in object [JavaPackage org.mozilla.javascript.Context]. It is not a function, it is "object". (<Unknown source>#1247) in <Unknown source> at line number 1247
下面是代码sn-p,
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String script = "Envjs code" + "jQuery code" + "my java script"; //code of envjs + jquery from the link provided at the end
engine.eval(script);
Invocable inv = (Invocable) engine;
inv.invokeFunction("myFunc", obj1, obj2);
我不使用任何浏览器功能,因此不需要对象的类似窗口。所以理想情况下我不想加载Envjs。请告诉我如何加载 jQuery 代码。
还有一个问题 - 如何将 Java 代码中的 Json 对象作为参数传递给 Javascript 函数?
http://www.envjs.com/dist/env.rhino.1.2.js
http://code.jquery.com/jquery-1.9.0.min.js
【问题讨论】:
标签: java javascript jquery rhino envjs