java - 无法通过 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();
}
解决方案
你需要在你的命令数组中添加“-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 开始。
推荐阅读
- c# - 如何在我的委托函数中传递一个类?
- jquery - 如何在jquery中获取某个特定字符内的所有数据
- ios - 如何限制 DragGesture 区域
- r - 根据其他条件下的条件更改行的值
- html - 从前端到后端检索写入文本区域的输入
- kotlin - 当 kotlin flow 发出 3 次重复数据时,为什么它在 collection 中只收到 2 次?
- python - 用于GraphSage算法的json格式的多个图的networkx数据集
- javascript - Promise 不会等待函数 promise 被解决
- oracle-apex - Oracle Apex 如何保留上一页中项目的价值并在所有其他页面中使用
- python - “str”对象没有“已访问”属性