Pat R
Pat R

Reputation: 186

How to Run an External jar file from within a firefox extension

Here is the code I have so far...

        // 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";

This currently does not work. Any suggestions??

EDIT I've also tried..

// 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";

Thanks, Pat

Upvotes: 0

Views: 2090

Answers (1)

Pointy
Pointy

Reputation: 414016

I think you need to init the process with a reference to the local file that is the "java" executable. That's what needs to be executed at the system level. The arguments need to be passed as an array of individual strings, not a single string.

Upvotes: 2

Related Questions