Java 带参数的Execute命令以:error=2结尾,系统找不到指定的文件

Java 带参数的Execute命令以:error=2结尾,系统找不到指定的文件,java,svn,Java,Svn,我的代码在Windows命令行上运行程序时遇到一些问题。 我的意图是用svn.exe更新版本控制存储库。 此程序需要update-u参数和到存储库的路径(例如C:\Projects\repository)。 当我执行如下所示的代码时,我得到以下错误: 无法运行程序“C:\program Files\SlikSvn\bin\svn状态-u “C:\Projects\repository”“:CreateProcess错误=2,系统无法 查找指定的文件 当我只执行这段代码时,它就会工作 Proces

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

无法运行程序“C:\program Files\SlikSvn\bin\svn状态-u “C:\Projects\repository”“:CreateProcess错误=2,系统无法 查找指定的文件

当我只执行这段代码时,它就会工作

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

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

解决方案是来自laune的注释。参数必须位于单独的字符串中

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

使用单独的字符串文字表示程序名和每个参数,或者使用一个字符串表示程序名,使用第二个字符串表示其余所有参数。谢谢@laune。我将其更改为
ProcessBuilder pb=newprocessbuilder(“C:\\Program Files\\SlikSvn\\bin\\svn”、“status”、“-u”、“\”“+baseDir+”\”)现在就可以了。选择正确的答案
ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\SlikSvn\\bin\\svn", "status", "-u", "\"" +baseDir +"\"");