我的代码在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");
答案 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"
。请注意可执行文件路径周围的扩展名和引号。