Как запустить программу через JavaScript из Java-приложения? - PullRequest
1 голос
/ 10 марта 2011

У меня небольшая проблема с запуском JavaScript-файла из Java-приложения.Я знаю, что приложение запускается через простой скрипт, если я помещаю его в 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.У кого-нибудь есть идея, как запустить программу?

Спасибо всем!^^


РЕДАКТИРОВАТЬ : Спасибо за ответы сейчас!Поскольку я не могу получить ActiveXObject из JVM, есть ли другой способ запустить внешнее приложение через JScript?Мне все равно, если это ActiveXObject.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Код JavaScript в браузере может использовать хост-объекты, предоставляемые средой (т. Е. Браузером).ActiveXObject является одним из таких объектов, предоставляемых IE.Судя по трассировке исключений, похоже, что этот объект недоступен в вашей среде.

0 голосов
/ 10 марта 2011

Не все объекты, которые доступны для Javascript, работающего в браузере, будут доступны для Javascript, работающего внутри вашей Java-программы (JVM). И именно поэтому он жалуется, что «ActiveXObject» не определен.

...