带参数的执行命令以:error = 2结束,系统找不到指定的文件

时间:2015-09-17 09:43:16

标签: java svn

我的代码在Windows命令行上运行程序时遇到了一些麻烦。 我的目的是使用svn.exe更新版本控制存储库。 该程序需要update -u参数和存储库的路径(例如C:\ Projects \ Reposirtory)。 当我执行如下所示的代码时,我收到此错误:

  

无法运行程序“C:\ Program Files \ SlikSvn \ bin \ svn status -u   “C:\ Projects \ Reposirtory”“:CreateProcess error = 2,系统不能   找到指定的文件

public void checkUpdates(String baseDir)
    {
        StringBuilder sb = new StringBuilder();

        try
        {

            ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\SlikSvn\\bin\\svn status -u \"C:\\Projects\\\"");

            pb.redirectErrorStream(true);
            Process process = pb.start();
            BufferedReader inStreamReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));

            while (process.isAlive() == true)
            {
                this.wait(3);
            }
            while (inStreamReader.ready() == true)
            {
                sb.append(inStreamReader.readLine());
            }

            System.out.println(sb.toString());
        }
        catch (IOException e1)
        {
            System.out.println("Es ist ein Fehler aufgetreten. " + e1.getMessage());
        }
        catch (Exception e)
        {
            System.out.println("Es ist ein Fehler aufgetreten. " + e.getMessage());
        }
        finally
        {
        }
    }

当我只执行此代码时,它将起作用。

ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\SlikSvn\\bin\\svn");

2 个答案:

答案 0 :(得分:1)

解决方案是来自laune的评论。参数必须站在不同的字符串中。

ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\SlikSvn\\bin\\svn", "status", "-u", "\"" +baseDir +"\"");

答案 1 :(得分:0)

不是C:\\Program Files\\SlikSvn\\bin\\svn。它是"C:\\Program Files\\SlikSvn\\bin\\svn.exe"。请注意可执行文件路径周围的扩展名和引号。