Java无法执行系统命令(Ubuntu)

标签 java stream

这不是我第一次尝试从 Java 执行系统命令;但这一次却很难。我有一个可以从终端正常执行的脚本。它从文件 (input.txt) 读取输入,对其进行处理并将结果导出到另一个文件 (ouput.txt)。整个过程持续不超过1秒。但是,当我尝试从 Java 执行它时,它会卡住并且永远不会完成。这是我的代码:

Process p = new ProcessBuilder("./runCalculator.sh").start();
p.waitFor();

我也尝试过 Runtime.getRuntime().exec("./runCalculator.sh") 但都是一样的。我已经读取了该进程的InputStream 和ErrorStream。错误流只返回一条消息,如“开始计算...”

有什么想法吗?

最佳答案

您需要使用以下代码:

ProcessBuilder pb = new ProcessBuilder();
pb.command("bash", "-c", "./runCalculator.sh");
Process process = pb.start();
int retValue = process.waitFor();

关于Java无法执行系统命令(Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665483/

相关文章:

java - 我可以在 Java SE 1.6 和 OpenJPA 2.1 中使用 javax.persistence.QueryTimeoutException 吗?

java - 如何将动态 JVM 命令行标志传递给独立的 JavaFX 应用程序?

java - 键入特定的 java.util.List.toArray()

java - JPanel 中的图像尺寸变小

ffmpeg 多个 rtsp 摄像机到 sigle 流到 youtube

java - JestResult.getSourceAsObjectList - 适用于 "@timestamp"或看似以 "@"开头的任何字段

javascript - 在nodejs中与集群共享流

c++ - streambuf 获取 streampos

Kotlin 如何将 JSONArray 映射到类型(流)

javascript - 从视频流中获取数据 URL?