flutter doctor提示JAVA_HOME为无效目录是什么原因?如何解决?
问题原因
JAVA_HOME要求指向JDK安装的根目录,而非Java可执行文件的路径。你当前配置的/usr/bin/java是Java执行程序的路径,Flutter校验时会自动拼接/bin/java后缀来寻找可用的Java程序,实际会定位到不存在的/usr/bin/java/bin/java路径,因此报错路径无效。which java返回的是可执行文件路径,和JAVA_HOME的配置要求本就不同,因此不存在矛盾。
修复步骤
- 第一步:获取正确的JDK根目录
执行命令readlink -f /usr/bin/java,会输出Java执行文件的实际绝对路径,例如返回结果为/usr/lib/jvm/java-11-openjdk-amd64/bin/java,去掉末尾的/bin/java后缀,剩余的/usr/lib/jvm/java-11-openjdk-amd64就是符合要求的JAVA_HOME路径。
如果你习惯使用Android Studio自带的JDK,也可以直接将JDK根目录指向Android Studio安装路径下的jre文件夹。 - 第二步:修改JAVA_HOME环境变量
- 临时生效(仅当前终端会话可用):直接执行
export JAVA_HOME=上一步获取的JDK根目录路径即可 - 永久生效:编辑当前shell对应的配置文件,bash用户编辑
~/.bashrc,zsh用户编辑~/.zshrc,在文件末尾添加export JAVA_HOME=上一步获取的JDK根目录路径,保存后执行source ~/.bashrc(或对应你的配置文件路径)让配置立即生效。
- 临时生效(仅当前终端会话可用):直接执行
- 第三步:验证配置有效性
执行$JAVA_HOME/bin/java -version,如果能正常输出Java版本信息,说明配置正确。 - 第四步:重新执行许可证校验命令
运行flutter doctor --android-licenses按照提示同意所有许可证,完成后再执行flutter doctor即可看到Android toolchain的报错已消除。
内容的提问来源于stack exchange,提问作者SePröbläm
相关产品推荐
相关产品推荐

