1

これが私のコードです。見直してください。戻ってこないよう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");
4

1 に答える 1

2

推測していますが、Process APIには一般的な問題があり、プロセスのstdoutとstderrを消費する必要があります。そうしないと、これらのストリーム(OSレベル)をバックアップするバッファーがいっぱいになると、外部プロセスがブロックする可能性があります。

一般的なアプローチは、1つ以上のスレッドを起動して、この情報をバックグラウンドで使用することです。

自分でロールするのではなく、これを処理するApacheCommonsExecを使用します。

于 2012-11-16T12:34:41.637 に答える