【问题标题】:JDK Error on ionic cordova run android离子科尔多瓦运行android上的JDK错误
【发布时间】:2018-08-04 01:09:15
【问题描述】:
ANDROID_HOME=C:\Users\tgiak\AppData\Local\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk-9.0.4
(节点:11252)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):CordovaError:JDK 1.8 或更高版本的要求检查失败
(节点:11252)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
还是出现这个错误,升级 Java 后重新安装了所有的 npm 模块。我无能为力了。
【问题讨论】:
标签:
cordova
ionic-framework
ionic3
【解决方案1】:
Android SDK不支持 JDK 9。它支持JDK 8 的一些功能,因此可以使用。
因此,Ionic 和 Cordova 应用程序无法将 JDK 9 用于 Android 平台。您需要安装 JDK 8 并将 JAVA_HOME 重置为 JDK 8 并尝试。
为了验证您的设置是否有效,请使用以下命令:
cordova requirements
在您的项目文件夹中。
【解决方案2】:
在尝试使用以下命令时,我在使用 ionic 3.19.1 cordova 8.0.0 时遇到了同样的错误:ionic cordova build android。
在尝试安装 jdk1.8.0_162 并卸载旧版本后没有成功。我查看了引发错误的 check_reqs.js 文件的代码,发现使用以下正则表达式检查 java 版本:
/javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i
和 javac -version 命令。
这样,我可以在我的用户目录中的某处找到一个 javac.exe 1.7 版本,该版本被另一个应用程序使用,该应用程序在较新版本之前包含在 PATH 变量中,并且未在“卸载程序”窗口中列出。
我还用下面的命令查看了PATH变量中javac第一版的完整文件名
for %i in (javac.exe) do @echo %~$PATH:i
所以解决方案是从 PATH 变量中删除旧版本的目录路径