Unity中Android Resolver报JAVA_HOME路径无效错误如何解决
问题背景
开发Unity 2D移动端游戏,接入Google AdMob完成广告功能开发,当前游戏已达可玩状态,安装完Admob相关依赖包后,运行Android Resolver执行依赖解析时触发报错。
核心报错提示
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\AdoptOpenJDK\jre-8.0.282.8-hotspot
完整报错日志
Full Error: Reporting analytics data: /androidresolver/resolve/gradle/failed/fetch?unityVersion=2021.3.0f1&unityPlatform=WindowsEditor&installSource=unitypackage&version=1.2.171&scope= 'Android Resolver: Gradle Resolve: Tool Extraction Failed' ERROR: Gradle failed to fetch dependencies. Failed to run 'F:\Unity\Projects\Floppy Bert\Temp\PlayServicesResolverGradle\gradlew.bat --no-daemon -b "F:\Unity\Projects\Floppy Bert\Temp\PlayServicesResolverGradle\PlayServicesResolver.scripts.download_artifacts.gradle" "-PANDROID_HOME=F:\Unity\2021.3.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK" "-PTARGET_DIR=F:\Unity\Projects\Floppy Bert\Assets\Plugins\Android" "-PMAVEN_REPOS=https://maven.google.com/" "-PPACKAGES_TO_COPY=com.google.android.gms:play-services-ads:21.0.0" "-PUSE_JETIFIER=0" "-PDATA_BINDING_VERSION=4.0.1"' stdout: ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\AdoptOpenJDK\jre-8.0.282.8-hotspot Please set the JAVA_HOME variable in your environment to match the location of your Java installation. stderr:
报错原因
Android Resolver拉取依赖时会调用Gradle执行脚本,Gradle启动时会优先读取系统配置的JAVA_HOME环境变量定位Java运行环境,当前读取到的路径是旧的AdoptOpenJDK 8安装路径,该路径要么已被删除、要么文件被移动,导致Gradle找不到可用的Java环境,直接终止解析流程。
注意Unity 2021.3版本安卓构建要求使用JDK 11,就算旧的JDK8路径存在,版本不匹配后续也会触发其他构建报错。
解决步骤
- 清理失效的系统环境变量
打开Windows系统环境变量设置面板,在用户变量和系统变量列表里找到JAVA_HOME项,检查对应值指向的目录是否真实存在、目录下是否有bin/java.exe文件。如果路径不存在直接删除该失效配置,或者将值修改为本地已安装的JDK 11的根目录路径。改完后开新的命令行窗口执行java -version,确认能正常输出Java版本信息再进行下一步。 - 切换Unity使用内置JDK,规避环境变量干扰
打开Unity编辑器,依次进入Edit > Preferences > External Tools找到Android配置分类,将JDK、Android SDK、NDK三个选项全部勾选为Unity 内置版本(Embedded),取消自定义路径的勾选,避免Unity读取到外部失效的路径配置。 - 清理缓存重新执行依赖解析
关闭Unity编辑器,进入项目根目录,删除Temp整个文件夹,再重新打开项目。依次点击菜单Assets > External Dependency Manager > Android Resolver,先执行Delete Resolved Libraries清空之前的解析残留文件,再点击Resolve重新执行依赖拉取即可。 - 补充排查项
如果上述操作做完还是报错,检查系统环境变量里是否配置了GRADLE_HOME指向本地旧版本Gradle,如果有可以暂时删除该变量,让Resolver使用自带的Gradle版本执行脚本,避免版本不兼容问题。
内容的提问来源于stack exchange,提问作者Leonniar
相关产品推荐
相关产品推荐

