2011-03-29 47 views
3

我有一個命令行工具,我想從java應用程序啓動。然後我的應用程序應該等待命令行工具返回/完成。 我將在Windows,Mac和Linux上部署我的應用程序,我的應用程序應該能夠在每個平臺上調用命令行工具。 如何正確地從我的Java應用程序調用它?由java applciation調用命令行工具

+0

它是一個單一的「命令行工具」,可用於所有操作系統或每個不同的工具? – 2011-03-29 09:25:57

回答

1

使用java.lang.Process中爲:

final Process process = Runtime.getRuntime().exec("yourprogram", null, outputDir); 
    final int exitCode = process.waitFor(); 
    if (exitCode != 0) { 
     throw new RuntimeException("program didnt exit with 0, but with " + exitCode); 
    } 
6

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); 
Process p = pb.start(); 
p.waitFor(); 
+1

我還建議閱讀並實施[Runtime.exec()不會]的所有建議](http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html) 。鏈接的文章在處理'Process'時覆蓋了常見的陷阱。 – 2011-03-29 09:28:04

0

可以使用Runtime類來啓動命令行程序。您應該能夠在Win/Mac/Linux中使用,方法是確保您運行的命令行程序始終位於PATH中。

  Runtime rt = Runtime.getRuntime(); 
      Process proc;    
      proc = rt.exec(cmdName); 

      // Wait for the command to complete. 
      exitVal = proc.waitFor();