java - getRuntime().exec(command) 挂起
问题描述
我正在执行一个不返回任何内容的命令,而是在目录中创建一个 zip 文件。每当执行命令出现问题时,应用程序将进入挂起状态。我看到很多信息说我也应该删除我的 ErrorStream,但是我在 StackOverflow 上看到的所有代码都无法在我的用例中帮助我。请注意我下面的代码。
在代码中,我运行一个命令,然后 java 应用程序将 ID 和密码输入到所需的字段中,然后程序开始。
try {
process = Runtime.getRuntime().exec(SomeCommand);
try (Writer writer = new OutputStreamWriter(process.getOutputStream());
Reader reader = new InputStreamReader(process.getInputStream()) ) {
CharBuffer buf = CharBuffer.allocate(80);
int tries = 2;
while (process.isAlive()) {
while (reader.ready() && reader.read(buf) > 0) {
System.out.println(buf.flip());
buf.clear();
}
tries--;
if (tries == 0) {
writer.write(p);
writer.flush();
}
if (tries == 1) {
writer.write(h);
writer.flush();
}
while (!reader.ready()) {
Thread.sleep(1000);
if (!process.isAlive ()) {
// Code to update UI to reflect progress
process.destroy();
break;
}
}
}
}
} catch (Exception e) {
SubmitController.logger.warningMessage("Error>>> CommandController");
progressIndicator.isVisible();
}
解决方案
推荐阅读
- wolfram-mathematica - 将特定规则应用于 Mathematica 中的持有(或未评估)函数
- mongodb - MongoDB按不存在的数组项查找
- faunadb - 为所有活动项目创建索引
- python - 正则表达式命名组的多个订单
- python-3.x - 从每一行中提取 char 的位置并提供列表中的位置聚合
- c - 二进制网格中的旋转点
- javascript - eslint - 异步箭头函数返回值错误
- spring - Spring Java 应用程序更改如何导致“无法验证连接”Hikari 池错误?
- javascript - 获取产品的 AJAX 收集端点
- docker - 无法推送到 Docker Hub - 标签不存在