我无法更改 Cordova JAVA_HOME 值
Posted
技术标签:
【中文标题】我无法更改 Cordova JAVA_HOME 值【英文标题】:I can't change Cordova JAVA_HOME value 【发布时间】:2018-09-27 23:26:56 【问题描述】:我最近将我的 java 版本升级到了 9。但是现在当我尝试为 android 构建时,我得到了
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
(node:87041) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): CordovaError: Requirements check failed for JDK 1.8 or greater
所以我重新安装了 jdk 1.8 并进入 .bash_profile 并将 JAVA_HOME 更改为
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
使用时返回的是什么
>> source .bash_profile
>> echo $JAVA_HOME
但是 Cordova 仍然给出上述错误。我错过了什么吗?
编辑:/usr/libexec/java_home -V 的输出是
Matching Java Virtual Machines (3):
9.0.4, x86_64: "Java SE 9.0.4" /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
1.8.0_171, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_144, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
【问题讨论】:
【参考方案1】:您的$PATH
中可能缺少 JDK。更新您的 PATH
以反映 jdk 的位置(通常对于 9.0.4 应该是):
export JAVA_HOME=$(/usr/libexec/java_home -v 9.0.4) # substitute version here
export PATH=$JAVA_HOME/bin:$PATH
如果JAVA_HOME
的导出不起作用,您可以使用您拥有的那个,因为它看起来正确:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
将其添加到您的~/.bash_profile
,您应该会恢复营业。
【讨论】:
感谢您的帮助!所以我将前两行添加到我的 .bash_profile 中,版本为 1.8.0。然后我能够回显 JAVA_HOME 并获得了 jdk1.8.0 的正确路径。但是,当我运行 cordova build android 时,它仍然说我的 JAVA_HOME 是 jdk-9.0.4,说明“检查 JDK 1.8 或更高版本失败” 嗯,这很有趣,所以JAVA_HOME
报告了1.8.0
,cordova 报告了9.0.4
。看起来几乎就像它被缓存或从其他地方提取信息一样。尝试重新启动cordova,也不要忘记先获取.bash_profile
。
这也可能是出于某种原因,Cordova 只寻找 /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk
而没有 /Contents/Home
— 如果仍然无法正常工作,您可以尝试一下。
我在我的项目文件夹中运行了 source .bash_profile,现在它说“无法从 '9.0.4' 确定 java 版本。(我发现这意味着我需要升级我的 gradle)所以这是一个不同的输出,但显然仍然有错误的 JAVA_HOME 值(因为我想要 1.8.0)
是的,我会推荐。除此之外,文档或多或少地提到了您已经完成的工作:cordova.apache.org/docs/en/7.x/guide/platforms/android/…。因此,如果 1.8.0 不起作用,您应该报告有关无效 jdk 的错误。也许也可以尝试卸载 9.0.4。以上是关于我无法更改 Cordova JAVA_HOME 值的主要内容,如果未能解决你的问题,请参考以下文章