【问题标题】:invoking a command line tool from within by java applciation通过 java 应用程序从内部调用命令行工具
【发布时间】:2011-07-25 03:01:12
【问题描述】:

我有一个命令行工具,我想从 Java 应用程序启动它。然后我的应用程序应该等待命令行工具返回/完成。 我将在 windows、mac 和 linux 上部署我的应用程序,我的应用程序应该能够在每个平台上调用命令行工具。 如何从我的 java 应用程序中正确调用它?

【问题讨论】:

  • 它是在所有操作系统上都可用的单一“命令行工具”,还是每个操作系统都使用不同的工具?

标签: java windows linux macos command-line


【解决方案1】:

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

【讨论】:

  • 我还建议阅读并实施When Runtime.exec() won't 的所有建议。链接的文章涵盖了处理Process 时的常见陷阱。
【解决方案2】:

为此使用 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);
    }

【讨论】:

    【解决方案3】:

    您可以使用Runtime 类来启动命令行程序。通过确保您正在运行的命令行程序始终在 PATH 中,您应该能够在 Win/Mac/Linux 中使用。

                Runtime rt = Runtime.getRuntime();
                Process proc;               
                proc = rt.exec(cmdName);
    
                // Wait for the command to complete.
                exitVal = proc.waitFor();
    

    【讨论】:

      猜你喜欢
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      相关资源
      最近更新 更多