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.(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, 系统找不到指定的文件。_第1张图片

问题解决

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

你可能感兴趣的:(Gradle sync failed: CreateProcess error=2, 系统找不到指定的文件。)