2011-03-10 148 views
1

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

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脚本安装在实际版本中。我知道,ActiveX是特定于IE的,但我不想在/通过IE启动应用程序。有没有人有想法,如何开始该计划?

谢谢大家! ^^


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

回答

0

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

+0

埃姆,我真的不明白你的帖子。如果浏览器中可用于JScript的所有对象都可用于JVM中的JScript,那么为什么这是reasen,我的程序没有像我想要的那样运行? – Gruber 2011-03-10 10:21:14

+0

@Gruber对不起,在'不'中遗漏了't'。我的意思是说'ActiveXObject'由浏览器实例化并提供给JavaScript运行时使用。当您在JVM内部运行JavaScript时,没有浏览器可以为您创建此对象。 – Nishan 2011-03-10 10:54:49

1

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

相关问题