问题记录
用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的版本号:
问题解决
上图中,箭头那一行的sh改成cmd即可。