【问题标题】:Not able to run command by Runtime.exec无法通过 Runtime.exec 运行命令
【发布时间】:2019-06-25 17:52:49
【问题描述】:

下面的命令我可以通过终端运行,但是当我尝试通过 java 代码执行它时,它给了我 127 退出代码。

sledge connect --cluster_id=<name> --namespace=<name> --password=<pass>

Java:

   try {
            String[] cmd = { "/bin/bash", "sledge connect --cluster_id=<name> --namespace=<name> --password=<pass>"};
            Process p = Runtime.getRuntime().exec(cmd);
            int po = p.waitFor();
            System.out.println(po);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

【问题讨论】:

  • 你需要一个-c,或者去掉shell。在编写代码之前,请务必在命令行中尝试您的命令字符串。

标签: java macos shell unix


【解决方案1】:

你需要在你的命令数组中添加“-c”,所以替换:

String[] cmd = { "/bin/bash", "sledge connect --cluster_id=<name> --namespace=<name> --password=<pass>"};

与:

String[] cmd = { "/bin/bash", "-c", "sledge connect --cluster_id=<name> --namespace=<name> --password=<pass>"};

来自 bash 手册:

-c 字符串 如果存在 -c 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给 位置参数 ters,从 $0 开始。

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2014-03-08
    • 2011-12-28
    相关资源
    最近更新 更多