You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android与Cordova运行异常:执行cordova run android时JDK检测失败

解决Cordova Run Android时JDK版本检测失败的问题

嘿,这个问题我之前也踩过坑——你装的JDK 10明明版本高于要求的1.8,但Cordova Android的检测脚本check_reqs.js对JDK 10+的版本号格式识别有bug,导致误判版本不达标。给你两个靠谱的解决办法:

方案一:降级到JDK 1.8(最稳妥的长期方案)

Cordova Android对JDK 1.8的兼容性是最完善的,降级后基本不会再出这类版本检测问题:

  • 下载JDK 1.8的Mac版本(OpenJDK或者Oracle官方版本都可以)
  • 安装完成后,配置环境变量指向JDK 1.8:
    1. 打开终端,编辑你的shell配置文件(如果用bash就是~/.bash_profile,zsh的话是~/.zshrc)
    2. 添加一行:export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
    3. 执行source ~/.bash_profile(或者对应的rc文件)让配置生效
    4. 验证:输入java -version,确认输出显示的是1.8.x版本

方案二:修改Cordova的版本检测脚本(临时 workaround)

如果你不想降级JDK,可以手动修改检测脚本的逻辑,让它能识别JDK 10:

  • 找到报错里的文件路径:/Users/richardeng/PharoJSmobile/platforms/android/cordova/lib/check_reqs.js
  • 打开这个文件,定位到版本检测的代码段(就是报错提示的第370行附近)
  • 调整版本匹配的正则表达式和判断逻辑:
    比如原来的代码可能是通过匹配1.8.x格式的版本号来判断,你可以把正则改成能识别JDK 10的格式:
    // 替换原来的版本匹配正则
    var versionMatch = output.match(/version "(1\.\d+|\d+)"/);
    // 然后调整版本比较逻辑
    if (versionMatch) {
        var version = versionMatch[1];
        // 判断版本是否>=1.8
        if (version.startsWith('1.')) {
            var minor = parseInt(version.split('.')[1]);
            if (minor < 8) {
                // 这里保留原有的错误抛出逻辑
            }
        } else {
            // 对于10+的版本,直接判定符合要求
            return true;
        }
    }
    
  • 保存文件后,重新执行cordova run android

另外,也可以尝试更新你的Cordova Android平台版本,执行cordova platform update android,新版本的插件可能已经修复了JDK 10的检测问题。

内容的提问来源于stack exchange,提问作者Richard Eng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:11:12