2010-02-03 197 views
0

這裏內運行一個外部的jar文件是我到目前爲止的代碼...如何從Firefox擴展

 // Run the external encryption process 
     var fileExe = Components.classes["@mozilla.org/file/local;1"] 
          .createInstance(Components.interfaces.nsILocalFile); 
     fileExe.initWithPath("~/tmp/Encrypt.jar"); 
     var process = Components.classes["@mozilla.org/process/util;1"] 
          .createInstance(Components.interfaces.nsIProcess); 
     process.init(fileExe); 
     var args = ["java -jar Encrypt.jar -e toEncrypt"]; 

     process.run(true, args, args.length); 

     document.getElementById('hello-world-status-bar-icon').label = "DONE"; 

目前這是行不通的。有什麼建議麼??

編輯 我也試過..

// Run the external encryption process 
var fileExe = Components.classes["@mozilla.org/file/local;1"] 
         .createInstance(Components.interfaces.nsILocalFile); 
fileExe.initWithPath("java"); 
var process = Components.classes["@mozilla.org/process/util;1"] 
         .createInstance(Components.interfaces.nsIProcess); 
     process.init(fileExe); 

var args = new Array(); 
     args[0] = " -jar"; 
     args[1] = "~/tmp/Encrypt.jar"; 
     args[2] = "-e"; 
     args[3] = "toEncrypt"; 

     process.run(true, args, args.length); 

     document.getElementById('hello-world-status-bar-icon').label = "DONE"; 

感謝, 帕特

+0

您需要運行的可執行文件是「java」,而不是jar文件,對吧? – Pointy 2010-02-03 18:29:27

+0

此外,這似乎是一個非常奇怪的事情,但我不知道任何關於你的擴展當然。 – Pointy 2010-02-03 18:36:35

+0

它是一個可運行的jar文件。從終端運行,「java -jar〜/ tmp/Encrypt.jar -e toEncrypt」對其進行加密。這是我的加密工作原理,在java中比JavaScript更快。 – 2010-02-03 21:32:25

回答

2

我認爲你需要與本地文件的引用是「Java」的可執行文件給init進程。這就是系統級需要執行的。參數需要作爲單個字符串的數組傳遞,而不是單個字符串。