首页 > 解决方案 > 无法通过 Runtime.exec 运行命令

问题描述

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

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

爪哇:

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

标签: javamacosshellunix

解决方案


你需要在你的命令数组中添加“-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 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。


推荐阅读