Java Runtime.getRuntime().exec->;无法运行程序CreateProcess error=2,系统找不到指定的文件
我正在开发一个命令行java应用程序,它必须在这个目录中运行一个名为Java Runtime.getRuntime().exec->;无法运行程序CreateProcess error=2,系统找不到指定的文件,java,windows,command-line,runtime,exec,Java,Windows,Command Line,Runtime,Exec,我正在开发一个命令行java应用程序,它必须在这个目录中运行一个名为gradlew.bat assemblererelease的程序:this.workDir+“/Project/CapAndroid” 所以我这样做了: Process p = Runtime.getRuntime().exec("gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid")); 该文件在该目录中100%确定,
gradlew.bat assemblererelease
的程序: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:\Users\Administrador\Desktop\generators\And\jobs\2247994\Project\CapAndroid”):
CreateProcess错误=2,系统找不到指定的文件
我认为windows有一个问题,即在exec()方法的第一个参数中传递的命令必须在最后一个参数中传递的目录中执行。Linux工作得很完美,OSX也是如此,问题只存在于Windows中
非常感谢好吧,我终于解决了这个问题,在.bat文件名之前添加了
cmd/c
,现在它工作得非常好:
Process p = Runtime.getRuntime().exec("cmd /c gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid"));
我希望这将对将来的人有所帮助linux和MacOS X上的命令是
gradlew.bat
?不,它只是没有bat的gradlew,我将其重命名,它是一个恒定的可能的副本删除您可能的重复注释,该错误是绝对路径中的一个空格看起来您正在程序中指定系统路径,根据错误检查该路径,您的程序无法找到该路径。:)是的,它今天帮了我!!太好了,非常感谢,今年我将为本地环境自动化所有设置过程;)