1

我在从 Java 应用程序中启动 JavaScript(-file)时遇到了一点问题。如果我将应用程序放入 sample.js,我知道应用程序可以通过一个简单的脚本启动。实际调用如下:

new ActiveXObject("MyApp.Application");

如前所述,通过双击脚本文件启动没有问题,但如果我通过 javax.script 包尝试它:

// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("new ActiveXObject(\"MyApp.Application\");");

如果得到以下异常:

Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "ActiveXObject" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:124)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
    at com.ime.actia.testing.ScriptTest.main(ScriptTest.java:13)

Microsoft Windows Script 安装在实际版本中。我知道,ActiveX 是特定于 IE 的,但无论如何我都不想在 IE 中/通过 IE 启动应用程序。有人知道如何启动程序吗?

感谢大家!^^


编辑:现在感谢您的回答!由于我无法从 JVM 中获取 ActiveXObject,是否有另一种方法可以通过 JScript 启动外部应用程序?我不在乎,如果它是一个 ActiveXObject。

4

2 回答 2

1

浏览器中的 JavaScript 代码可以使用环境(即浏览器)提供的宿主对象。ActiveXObject 就是 IE 提供的一种这样的对象。从您的异常跟踪中,看起来该对象在您的环境中不可用。

于 2011-03-10T11:06:38.897 回答
0

并非所有可用于在浏览器中运行的 Javascript 的对象都可用于在您的 Java 程序 (JVM) 中运行的 Javascript。而且,这就是它抱怨“ActiveXObject”未定义的原因。

于 2011-03-10T10:17:15.680 回答