java - 如何在Java应用程序中通过JavaScript启动程序?

原文 标签 java javascript rhino javax.script

我在从Java应用程序中启动JavaScript(文件)时遇到了一些问题。我知道,如果我将其放入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。

最佳答案

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

相关文章:

java - char []->字符串->字节[]->字符串…,我迷路了

java - 在简单计算器中验证数学运算符

javascript - 使用Java将lon/lat坐标分类为geojson多边形

javascript - clearRect函数不会清除 Canvas

java - 如何使用Java和Rhino查找所有出现的Javascript函数

java - 如何在Android中以编程方式放大mp3声音

java - 动态修改类路径

java - 当我需要使用带有参数的构造函数时,如何使用Rhino子类化(扩展)Java类?

javascript - 在使用javascript进行幻灯片放映中的图片过渡时,整个页面都会抖动

rhino - parseInt在Rhino中返回两倍