0

我想从 java 程序中发送下面的命令,但不要过于担心阅读响应。知道我该怎么做

下面的命令从命令提示符播放 wav 文件

aplay ~/javafx/examples/PrayerTime/src/Audio/athan1.wav

我正在尝试下面的代码,但它没有播放任何东西!从我的java程序

ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "aplay ~/javafx/examples/PrayerTime/src/Audio/athan1.wav");
try {
Process process = processBuilder.start();
} catch (IOException ex) {
Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex);
}
4

1 回答 1

0

Andrew 在写作时绝对正确,忽略了输出是问题的核心。

当您通过 启动一个进程时processBuilder.start(),您基本上是在启动另一个拥有自己生命的进程。这是火灾和忘记。您通过抛出的异常获得的唯一反馈是实际启动未成功时。它没有说明启动的过程是否成功完成了它应该做的事情。

由于您没有看到错误消息,因此该过程的启动很顺利。

现在,使用aplay~建议您使用某种 Unix,可能是 Linux。有一个进程将常规输出打印到标准输出流,并将错误输出打印到标准错误流。它还返回一个退出代码,指示事情是否顺利进行。退出代码(您可以process通过使用从对象中获取它waitFor())和错误流(也可以从process对象中获得)都为您提供了进程是否成功的所有必要信息,如果没有,为什么不成功。

综上所述,您可能真的想使用Runtime.exec()它,因为它不那么复杂——至少在您知道如何正确调用您的流程之前是这样。

于 2013-11-24T11:29:03.400 回答