java - Runtime.getRuntime().exec -> Cannot run program CreateProcess error=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"));

该文件 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/

相关文章:

java - 应用程序已停止(Android Studio 蓝牙)

c# - 在用户的启动文件夹中放置快捷方式以启动 Windows

c++ - Windows 7奇怪的异常现象

linux - 如何将 "which"与正则表达式或其他方式一起使用以在 $PATH 中查找命令

java - 如何在堆转储中查看程序变量名称和值?

java - Netbeans 从右到左显示 jlabel-text

java - 使用 OpenCV 代码开发 Android 应用程序

java - C : and C:/之间的区别

shell - 如何在buildbot的shell命令行中添加 "&&"?

java - 如何使用卡片布局?