2011-03-29 46 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();