如何从Java应用程序中通过JavaScript启动程序?

时间:2011-03-10 09:56:20

标签: java javascript rhino javax.script

我在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。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

并非所有可在浏览器中运行的Javascript的对象都可用于在Java程序(JVM)中运行的Javascript。而且,这就是为什么抱怨'ActiveXObject'没有定义。