当试图调用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我没有输出(除了之前打印的命令).好像git还在下载一些东西,但是并没有告诉我.也许它会在完成之后输出所有内容(所以正常的git调用输出,准备好了多少,并且每次更改此行 - 可能因为这样,BufferedReader无法读取已完成的行,因此无法输出它).
是否有任何解决方法,让这个工作?
您需要检查 git clone 的部分(或大部分)输出是否在 stdout 或 stderr 上(例如,对于 git push 就是这种情况)。
如果是后者,请参阅此示例以读取 stdout 和 stderr。
并使用一个数组作为命令的参数(就像我在“ Runtime.getRuntime().exec()”中所做的那样)。
另请参见从 Java 调用进程。
| 归档时间: |
|
| 查看次数: |
8341 次 |
| 最近记录: |