Java ProcessBuilder不执行命令,但也不返回错误

时间:2019-04-12 19:11:54

标签: java processbuilder oggvorbis

在我的PC上运行以下代码可以正常工作,但在服务器上由nginx-clojure运行时无法运行。

ProcessBuilder pb = new ProcessBuilder("/usr/bin/vorbiscomment", "-w", "-t", "\"title=MySong\"", "-t", "\"artist=SomeArtist\"", "\"/media/music/SomeArtist/MySong.ogg\"");

背景:

我正在为音乐相关项目开发REST API。它使用nginx模块(nginx-clojure)嵌入Java程序。我现在的目标是使用UNIX命令行实用程序 vorbiscomment 和Java ProcessBuilder编辑vorbis标签。该代码确实可以在我的PC上运行,这使我相信它可能与服务器上的权限有关。我的问题是我没有从ProcessBuilder获得任何指示命令失败的输出。我尝试过:

Process proc = pb.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
{
    sb.append(line).append('\n');
}
return sb.toString();

什么都没输出。

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您正在从Process的InputStream中读取内容。你应该看 Process.getErrorStream()Process.getOutputStream()

https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

您还可以检查exitValue,以查看该过程是否成功完成。