【问题标题】:Execute a command using ProcessBuilder from windows从 Windows 使用 ProcessBuilder 执行命令
【发布时间】:2014-01-20 10:31:33
【问题描述】:

当我尝试在 Windows 机器上从我的 java 程序执行以下行时,出现以下错误。

能否请您告诉我完成这项工作的详细步骤?

final Process exec = new ProcessBuilder("bash", "-c", query).start();

error : java.io.IOException: Cannot run program "bash": CreateProcess error=2, 系统找不到指定的文件

【问题讨论】:

  • 找不到名为 bash 的程序...你能从命令行运行bash 吗?

标签: java windows process processbuilder


【解决方案1】:

Windows 没有 bash,因此您必须使用“CMD”(命令)。 "bash" 用于 unix 系统。

这应该可以在 Windows 上运行:

final Process exec = new ProcessBuilder("CMD", "/C", query).start();

如果你想要一个关于如何在 Windows 中使用 ProcessBuilder 的好例子:External programs using Java ProcessBuilder class

【讨论】:

    【解决方案2】:
    final Process exec = new ProcessBuilder("bash", "-c", query).start();
    

    如错误所示,没有可执行程序 bash,通常 bash 安装在 Unix 系统的 /bin/bash 位置,因此您必须提供程序的路径。 甚至相对路径也有效。下面的这个命令可以在安装了 bash 的类 Unix 操作系统上运行。

    final Process exec = new ProcessBuilder("/bin/bash", "-c", query).start();
    

    【讨论】:

      【解决方案3】:

      /bin/bash 在 Windows 上不存在。尝试将 /bin/bash 替换为 cmd.exe,并将开关 -c 替换为 /c

      final Process exec = processBuilder("cmd.exe", "/c", query).start();

      【讨论】:

        【解决方案4】:

        如果只是执行 bash 命令,则需要 java 的 bash 库。

        【讨论】:

          猜你喜欢
          • 2011-04-16
          • 2014-03-14
          • 2017-03-07
          • 2017-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          相关资源
          最近更新 更多