我正在开发一个命令行 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: Cannot run program "gradlew.bat" (in directory "C:\Users\Administrador\Desktop\generators\And\jobs\2247994\Project\CapAndroid"): CreateProcess error=2, The system cannot find the file specified
我觉得windows有个问题就是知道exec()方法第一个参数传入的命令必须在最后一个参数传入的目录下执行。 Linux 运行完美,OS X 也一样,问题仅在 Windows 中
非常感谢
最佳答案
好吧,我终于解决了这个问题,在 .bat 文件的名称前添加 cmd/c
,现在它完美地工作了:
Process p = Runtime.getRuntime().exec("cmd /c gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid"));
我希望这对以后的人有帮助
关于java - Runtime.getRuntime().exec -> Cannot run program CreateProcess error=2, 系统找不到指定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203294/