有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么进程。waitfor不回来了?

这是我的密码。请复习一下。看来p.waitFor()没有回来,请帮帮我。谢谢

try
        {
            String svnCmd="svn diff -r " +startVersion +":" + endVersion +" --summarize --username testdomain\\tesuer --password test.123 http://cvs-server.testserver.com:8001/svn/projects/testproject/";

            Process p = Runtime.getRuntime().exec(svnCmd);
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = reader.readLine();
            while (line != null)
            {
                System.out.println(line);
                line = reader.readLine();
            }
        }
        catch (IOException e1)
        {

        }
        catch (InterruptedException e2)
        {

        }

        System.out.println("Done");

共 (1) 个答案

  1. # 1 楼答案

    我猜,但Process API有一个常见问题,即您必须使用进程的stdout和stderr,否则当支持这些流(操作系统级别)的缓冲区填满时,外部进程可能会阻塞

    典型的方法是在后台启动一个或多个线程来使用这些信息

    我会使用Apache Commons Exec来为您处理这个问题,而不是自己滚动