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

Nul*_*ion 2 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"));
Run Code Online (Sandbox Code Playgroud)

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

java.io.IOException:无法运行程序"gradlew.bat"(在目录"C:\ Users\Administrador\Desktop\generators\And\jobs\2247994\Project\CapAndroid"中):CreateProcess error = 2,系统找不到指定的文件

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

非常感谢

Nul*_*ion 9

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

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

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