Gradle sync failed: CreateProcess error=2, 系统找不到指定的文件。

问题记录

用pc打开一个在mac上开发的Android项目时,gradle build报错:

Gradle sync failed: CreateProcess error=2, 系统找不到指定的文件。
Consult IDE log for more details (Help | Show Log)

问题定位

遵从提示,看下AS的日志吧,目录为:

C:\Users\shue\.AndroidStudio2.3\system\log\idea.log

找到了这个错误:

WARN – nal.AbstractExternalSystemTask – CreateProcess error=2, 系统找不到指定的文件。
com.intellij.openapi.externalSystem.model.ExternalSystemException: CreateProcess error=2, 系统找不到指定的文件。

网上说,git路径配置有误会出现这个报错,我检查了自己的git配置,没有错误。
于是继续看日志,顺着异常栈,我找到了更详细的错误:

Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process ‘command ‘sh”
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:197)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:327)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
… 5 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start ‘sh’
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
at net.rubygrapefruit.platform.internal.WindowsProcessLauncher.start(WindowsProcessLauncher.java:22)
at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68)
… 5 more
Caused by: java.io.IOException: Cannot run program “sh” (in directory “E:\Baidu\android\BaiduHi”): CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
… 8 more
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
… 9 more

原来是跑不了shell导致gradle build fail,项目里啥地方用到shell了呢?找来找去,发现有一个module的build.gradle里用shell获取git的版本号:

《Gradle sync failed: CreateProcess error=2, 系统找不到指定的文件。》

问题解决

上图中,箭头那一行的sh改成cmd即可。

    原文作者:Shue1993
    原文地址: https://www.jianshu.com/p/0260c1dc372b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞