2011-03-10 144 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提供的一個對象。從您的異常跟蹤中看來,該對象在您的環境中不可用。

相關問題