2015-08-25 710 views
1

我開發必須運行一個名爲gradlew.bat assembleRelease此目錄內程序的命令行Java應用程序:this.workDir+"/Project/CapAndroid"調用Runtime.getRuntime()EXEC - >不能運行程序CreateProcess的錯誤= 2,系統找不到指定的文件

所以我這樣做:

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

我覺得窗戶必須知道在EXEC的第一個參數傳遞的命令()方法必須在最後一個參數傳遞的目錄執行的問題。 Linux的完美的作品,也OS X太,問題僅在Windows

非常感謝

+0

命令在Linux和MacOS X是'gradlew.bat'? – RealSkeptic

+0

不,其簡單gradlew沒有蝙蝠,我重命名它,它是一個常數 – NullPointerException

+0

可能的重複http://stackoverflow.com/questions/19621838/createprocess-error-2-the-system-cannot-find-the-file-指定 – Deh

回答

7

好了,我終於解決了這個問題.bat文件的名稱前添加cmd /c,現在它完美的作品:

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

我希望這將幫助別人的未來

相關問題