无法修改Cordova的JAVA_HOME值,Android构建JDK版本校验失败求助
我之前碰到过好几个类似的情况,大概率是Cordova没读到你更新后的环境变量,或者系统里的Java版本优先级没调整对。试试下面这些实用的解决步骤:
1. 先确认环境变量真的生效了
打开终端,运行这几个命令看看当前的Java配置:
echo $JAVA_HOME java -version javac -version
如果输出还是JDK 9的信息,说明你的.bash_profile修改没生效。可以先执行source ~/.bash_profile让配置立刻生效,或者直接重启终端试试。
2. 用系统自带的工具自动定位JDK 1.8
macOS有个java_home工具可以帮你自动找到对应版本的JDK路径,比硬编码路径靠谱多了。把.bash_profile里的JAVA_HOME设置改成这样:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) export PATH=$JAVA_HOME/bin:$PATH
这样每次打开终端都会自动定位到JDK 1.8的正确路径,不用担心输错路径或者版本更新后路径变化。
3. 让Cordova读取最新的环境变量
有时候Cordova或者你用的IDE会缓存旧的环境配置,导致没读到新的JAVA_HOME:
- 如果是用IDE构建的,先彻底重启IDE,很多IDE不会实时刷新终端的环境变量;
- 或者在终端里先加载配置再运行构建命令:
source ~/.bash_profile cordova build android
4. 检查有没有其他配置文件覆盖了设置
如果你用的是zsh而不是默认的bash,那么shell加载的是.zshrc而不是.bash_profile;另外.bashrc这类文件也可能在.bash_profile之后加载,覆盖你的JAVA_HOME设置。打开这些文件看看有没有其他export JAVA_HOME的行,有的话改成JDK 1.8的路径就行。
5. 临时强制Cordova使用指定JDK
如果上面的方法都不行,可以试试直接在构建命令里指定JAVA_HOME,作为临时测试:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home cordova build android
如果这个命令能成功,就说明问题确实出在环境变量的持久化设置上,再回头检查前面的步骤就行。
一般来说,步骤2和3就能解决大部分问题了,用java_home动态设置路径基本不会出错,刷新环境变量后Cordova就能读到正确的JDK版本了。
内容的提问来源于stack exchange,提问作者sadelbrid

