Java ProcessBuilder 没有执行命令但也没有 return 错误

Java ProcessBuilder is not executing command but also doesn't return an error

运行 以下代码在我的电脑上运行良好,但在我的服务器上由 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-tags。该代码在我的电脑上确实有效,这让我相信它可能与服务器上的权限有关。我的问题是我没有从 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();

没有输出任何东西。

如有任何帮助,我将不胜感激。

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

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

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