macOS下Flutter运行Android模拟器时JAVA_HOME路径无效该如何解决?
问题场景
在macOS开发Flutter项目,启动Android模拟器时触发错误:
ERROR: JAVA_HOME is set to an invalid directory:
“/Library/Java/JavaVirtualMachines/openlogic-openjdk-17.jdk/Contents/Home“Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
但终端执行echo $JAVA_HOME显示的路径是正确的:
/Users/rashmi/Library/Java/JavaVirtualMachines/openjdk-17.0.1/Contents/Home
执行/usr/libexec/java_home -v的输出如下:
Matching Java Virtual Machines (2): 17.0.1 (arm64) "Oracle Corporation" - "OpenJDK 17.0.1" /Users/rashmi/Library/Java/JavaVirtualMachines/openjdk-17.0.1/Contents/Home 1.8.321.07 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home /Users/rashmi/Library/Java/JavaVirtualMachines/openjdk-17.0.1/Contents/Home
解决步骤
1. 统一所有Shell的环境变量配置
Flutter可能使用了和你当前终端不同的Shell(比如你用zsh,但Android Studio调用的是bash),需要确保所有Shell配置文件都设置了正确的JAVA_HOME:
zsh用户:编辑
~/.zshrc,添加或修改:export JAVA_HOME=$(/usr/libexec/java_home -v 17) export PATH=$JAVA_HOME/bin:$PATHbash用户:编辑
~/.bash_profile或~/.bashrc,添加相同内容。
2. 刷新环境变量并验证
保存配置文件后,在终端执行:
source ~/.zshrc # zsh用户执行这个 # 或 source ~/.bash_profile # bash用户执行这个
然后再次检查JAVA_HOME:
echo $JAVA_HOME
确认输出为正确路径/Users/rashmi/Library/Java/JavaVirtualMachines/openjdk-17.0.1/Contents/Home。
3. 配置Android Studio的Gradle JVM
如果通过Android Studio运行Flutter,它可能没读取系统Shell的配置:
- 打开Android Studio,进入
Preferences(Windows/Linux是Settings)→Build, Execution, Deployment→Build Tools→Gradle。 - 在
Gradle JVM选项中,手动选择正确的OpenJDK 17路径:/Users/rashmi/Library/Java/JavaVirtualMachines/openjdk-17.0.1/Contents/Home。
4. 重启相关进程
- 关闭所有终端窗口,重新打开。
- 重启Android Studio和Flutter项目。
- 重启Android模拟器。
5. 清理Flutter缓存(可选)
如果以上步骤无效,执行以下命令清理缓存:
flutter clean flutter pub get
内容的提问来源于stack exchange,提问作者Rashmi Rekha

