无法通过Runtime.exec运行命令

问题描述 投票:-1回答:1

下面的命令我可以通过终端运行,但是当我试图通过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();
        }
java macos shell unix
1个回答
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 string如果存在-c选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从$ 0开始。

© www.soinside.com 2019 - 2024. All rights reserved.