2013-08-01 4 views
2

Я пытаюсь выполнить jar-файлы из другой Java-программы. Я использую следующий код:Запустить jar-файл из java-программы

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

Но его не работает. Я попробовал Google, и он дал мне примеры с помощью ProcessBuilder, но это тоже не работает.

+0

Включает ли ваш аргумент 'exec' необходимые бит' [path]/java -jar'? – chrylis

+0

И используйте 'ProcessBuilder', он лучше управляет пространством в командах/параметрах – MadProgrammer

ответ

12

Использование ProcessBuilder (java.lang.ProcessBuilder) решит вашу проблему. Синтаксис выглядит следующим образом -

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

Вы можете redirent ввод/вывод/ошибка в/из файлов следующим образом

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); 
5

Первое предложение/рекомендация - использовать ProcessBuilder вместо Runtime. Вот то, что вы можете попробовать:

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

Вы можете запустить банку файл где вы хотите, используя только одну строку код.

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

где

new File("your path to jar") 

Надеется, что это помогает.

Спасибо.

Смежные вопросы