当尝试调用git命令时,从Java正常命令行执行,我得到一个奇怪的结果:它什么都不输出。
例如,如果我尝试运行它:
public class GitTest {
public static void main(String args[]) throws IOException{
String command = "git clone http://git-wip-us.apache.org/repos/asf/accumulo.git";
Process p = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
String text = command + "\n";
System.out.println(text);
while ((line = input.readLine()) != null) {
text += line;
System.out.println("Line: " + line);
}
}
}
我没有输出(除了之前打印的命令)。好像git还在下载一些东西,但是并没有告诉我。也许它会在它完成之后输出所有内容(所以正常的git调用输出,准备好了多少,并且每次更改此行 - 可能是因为BufferedReader无法读取已完成的行,因此无法输出它)。
是否有任何解决方法,以使其工作?
答案 0 :(得分:2)
您需要检查git clone的某些(或大部分)输出是否在stdout或stderr(it is the case, for instance, for git push)上。
如果是后者,请参阅this example以阅读stdout和stderr。
使用数组作为命令的参数(正如我在" Runtime.getRuntime().exec()
"中所做的那样。)
另请参阅Invoking Processes from Java。
答案 1 :(得分:0)