【问题标题】:Runtime.getRuntime().exec -> Cannot run program CreateProcess error=2, The system cannot find the file specifiedRuntime.getRuntime().exec -> 无法运行程序 CreateProcess 错误=2,系统找不到指定的文件
【发布时间】:2015-08-25 11:52:45
【问题描述】:

我正在开发一个命令行 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:\Users\Administrador\Desktop\generators\And\jobs\2247994\Project\CapAndroid”): CreateProcess error=2, 系统找不到指定的文件

我觉得windows有问题要知道exec()方法第一个参数传入的命令必须在最后一个参数传入的目录中执行。 Linux 完美运行,OS X 也一样,问题仅在 Windows 中

非常感谢

【问题讨论】:

  • linux和MacOS X上的命令是gradlew.bat?
  • 不,它只是没有 bat 的 gradlew,我重命名它,它是一个常量
  • 删除您可能的重复评论,该错误是针对绝对路径中的空格
  • 似乎您在程序中指定了系统路径,根据错误检查该路径,您的程序无法找到该路径。 :)

标签: java windows command-line runtime exec


【解决方案1】:

好吧,我终于解决了它在 .bat 文件的名称前添加 cmd /c,现在它可以正常工作了:

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

我希望这对将来的某人有所帮助

【讨论】:

  • 是的,今天对我有帮助...!!
  • 太棒了,非常感谢,今年我将为本地环境自动执行所有设置过程;)
猜你喜欢
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2018-06-05
  • 2016-07-26
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2013-02-01
相关资源
最近更新 更多