java - 如何从 springboot 服务运行 CMD 命令?
问题描述
我可以通过普通的 java 类运行相同的代码。但是,当我将相同的代码移动到 springboot 中的服务类,并在点击 url 时从控制器调用服务时,该命令不会运行或卡住很长时间。
Process process = new ProcessBuilder("CMD", "/C", command2).start();
.
.
.
process.waitFor();
process.destroy();
尝试了很多次和不同的方法,仍然无法找到解决方案。
命令是
"tool --f pathToFile".
解决方案
尝试使用单独的参数,不要使用整个命令,而是将其分解为单独的参数,如下所示:
try {
List<String> commands = new ArrayList<>();
commands.add("CMD");
commands.add("/C");
commands.add("tool");
commands.add("--f");
commands.add(pathToFile);
ProcessBuilder pb = new ProcessBuilder(commands);
try {
Process p = pb.start();
int j = p.waitFor();
int exitValue = p.exitValue();
System.out.println("Finished with code: " + j);
System.out.println("Finished with exitValue: " + exitValue);
} catch (Exception e) {
System.out.println("exception: " + e);
}
} catch (Exception e) {
e.printStackTrace();
}
推荐阅读
- r - 如何执行模拟以在 R 中找到具有给定概率的 z 分数 (x)
- angular - 如何在 Angular/RxJS 中合并两个 observable?
- c# - 如何断言 IEnumerable
- python - Selenium,pythons 网页抓取
- javascript - 使用 Javascript 提交表单后阻止导航
- php - 我怎样才能shell_exec这个powershell命令来获取进程的pid?
- reactjs - 如何在videojs中添加带有控制栏按钮列表的menuItem
- javascript - Plotly/Dash:如何使行索引独一无二?
- scala - Scala MaxBy 的元组
- docker - openshift 正在使用 uid 101 运行所有容器,而不是从项目范围中获取 uid