8

I am trying to execute jar files from another Java program. I am using the following code :

 try { Runtime runtime = Runtime.getRuntime(); runtime.exec("path upto jar"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Exception occured" + ex); } 

But its not working. I tried google and it gave me the examples using ProcessBuilder, but that is not working either.

2
  • Does your argument to exec include the necessary [path]/java -jar bits? Commented Aug 1, 2013 at 4:01
  • And use ProcessBuilder, it handles space in commands/parameters better Commented Aug 1, 2013 at 4:02

3 Answers 3

20

Using ProcessBuilder(java.lang.ProcessBuilder) will solve your problem. Syntax is as follows -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "absolute path upto jar"); Process p = pb.start(); 

You can redirent input/output/error to/from files as follows

File commands = new File("absolute path to inputs file"); File dirOut = new File("absolute path to outputs file"); File dirErr = new File("absolute path to error file"); dirProcess.redirectInput(commands); dirProcess.redirectOutput(dirOut); dirProcess.redirectError(dirErr); 
Sign up to request clarification or add additional context in comments.

Comments

9

First suggestion/recommendation is to use ProcessBuilder instead of Runtime. Here is what you can try:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "./jarpath/yourjar.jar"); Process p = pb.start(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String s = ""; while((s = in.readLine()) != null){ System.out.println(s); } int status = p.waitFor(); System.out.println("Exited with status: " + status); 

1 Comment

If the while loop terminates with the process, is the waitFor() really required?
2

You can run a jar file from where ever you want by using only this one line code.

 Desktop.getDesktop().open(new File("D:/FormsDesktop.jar")); 

where

new File("your path to jar") 

Hope it helps.

Thanks.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.