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

问题描述 投票:0回答:1

运行以下代码在我的电脑上工作正常,但在我的服务器上运行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();

没有输出任何东西。

我很感激任何帮助。

java processbuilder oggvorbis
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.