Runtime.getRuntime()。exec - >无法运行程序CreateProcess error = 2,系统找不到指定的文件

时间:2015-08-25 11:52:45

标签: java windows command-line runtime exec

我正在开发一个命令行java应用程序,该应用程序必须在此目录中运行名为gradlew.bat assembleRelease的程序:this.workDir+"/Project/CapAndroid"

所以我这样做了:

Process p = Runtime.getRuntime().exec("gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid"));

该文件在该目录中100%确定,它在Linux中运行良好,但在Windows上无效!我收到了这个错误:

  

java.io.IOException:无法运行程序“gradlew.bat”(在目录中   “C:\用户\ Administrador \桌面\发电机\和\工作\ 2247994 \项目\ CapAndroid”):   CreateProcess error = 2,系统找不到指定的文件

我认为windows有一个问题,就是要知道在exec()方法的第一个参数中传递的命令必须在最后一个参数传递的目录中执行。 Linux也很完美,OS X也是如此,问题仅出在Windows中

非常感谢

1 个答案:

答案 0 :(得分:9)

好吧,我终于解决了它在.bat文件的名称之前添加cmd /c,现在它完美地运行了:

Process p = Runtime.getRuntime().exec("cmd /c gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid"));

我希望这将有助于未来的人