0

Webサーバーにバージョン管理を追加しようとしています(Windowsでは...)。バッチスクリプトを使用して自動追加とコミットを実行する必要があります。これが私が今持っているものです:

public static void bzr_add(String path, String commit) throws IOException {
    ProcessBuilder pb = new ProcessBuilder(scripts + "bzr_add.bat", storage, path, "\"" + commit + "\"");
    Process p = pb.start();
    String line;
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
    r.close();
    try {
        p.waitFor();
    } catch (InterruptedException ex) {
        Logger.getLogger(local.class.getName()).log(Level.SEVERE, null, ex);
    }
}

「scripts」はスクリプトを見つけることができるディレクトリであり、「storage」はストレージディレクトリであり、「path」は新しいファイルのパスです。

バッチスクリプト:

cd %1
bzr add %2
bzr commit -m %3

そして私が得るもの:

Infos: C:\Program Files\glassfish-3.1.2\glassfish\domains\domain1>cd c:\storage_dir\ 
Infos: C:\storage_dir>bzr add dir\file.ext 
Infos: C:\storage_dir>bzr commit -m "commit_message"

したがって、問題はないようです。これをcmdシェルにコピーすると、機能します(シェルでbzr_add.bat par1 par2 par3を実行した場合にも機能します)。また、スクリプトを変更して新しいファイルを作成すると、それらは正しいディレクトリに作成されるため、何かが正しく実行されます。

しかし、私がJavaを介してスクリプトを実行するとき、バザールはそれに同意していないようです。

4

1 に答える 1

1

私は自分の質問に対する解決策を見つけました(なぜこれを行う必要があるのか​​わかりませんが)。

この行をバッチファイルに追加する必要があります:

path = %PATH%;c:\Program Files\Bazaar\

cmd.exeを使用するとすでにパスに含まれているので奇妙ですが、そのように機能します。多分それは同じ問題を抱えている人を助けるでしょう。

于 2012-07-12T06:34:31.387 に答える