Java 带参数的Execute命令以:error=2结尾,系统找不到指定的文件
我的代码在Windows命令行上运行程序时遇到一些问题。 我的意图是用svn.exe更新版本控制存储库。 此程序需要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
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 +"\"");