Android项目同步构建失败:Gradle Doctor提示JAVA_HOME未设置及监听器报错
Gradle Doctor 触发的构建异常解决方案
根因定位
报错栈中出现的不存在路径/Library/Internet,是MacOS系统下含空格路径被错误截断的结果。
当前使用的低版本Gradle Doctor插件,在解析Gradle进程返回的Java安装路径时,未对路径中的转义空格做兼容处理,直接按空格拆分字符串,导致完整路径/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home被截断为/Library/Internet,连锁触发两类问题:
- 因截断后的路径不合法,判定JAVA_HOME未配置,输出对应的提示信息
- 读取截断后的不存在路径时,抛出
java.nio.file.NoSuchFileException,直接中断项目配置流程
可执行解决步骤
- 修正JAVA_HOME路径配置
打开终端对应的环境配置文件(zsh用户编辑~/.zshrc,bash用户编辑~/.bash_profile),检查export JAVA_HOME的配置行:
优先使用命令自动获取无空格的JDK路径,避免指向系统默认带空格的applet插件JDK,配置写法为:export JAVA_HOME=$(/usr/libexec/java_home)
若必须使用带空格的Java路径,需给路径值加上双引号包裹,避免shell解析时截断路径。
执行source ~/.zshrc(或对应配置文件)让配置生效,在终端执行echo $JAVA_HOME,确认输出为完整的、无截断的合法路径。 - 升级Gradle Doctor插件版本
打开项目根目录的build.gradle文件,找到Gradle Doctor插件的classpath依赖配置,将版本升级到0.8.0及以上,该版本已修复带空格路径的解析逻辑缺陷。 - 兜底临时方案
若暂时无法调整Java路径或升级插件,可在项目根目录的gradle.properties文件中添加配置,直接关闭JAVA_HOME校验逻辑,跳过触发报错的代码分支:doctor.java.home.check.enabled=false
验证流程
所有配置调整完成后,先在终端执行java -XshowSettings:properties -version,查看输出的java.home值是否为完整的、无截断的路径,确认不存在被空格拆分的问题后,再执行Android Studio的项目同步、清理构建流程即可正常完成操作。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

