2013-08-01 159 views
2

我想從另一個Java程序執行jar文件。我正在使用以下代碼:從java程序運行jar文件

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

但它不工作。我試過谷歌,它給了我使用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

您可以通過使用只有這一條線運行,從任何你想去的地方一個jar文件碼。

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

其中

new File("your path to jar") 

希望它能幫助。

謝謝。