cordova 9.0 构建时提示Requirements check failed for JDK 8 如何解决

1 篇文章 0 订阅
1 篇文章 0 订阅

祖国大地经济复苏,全国各族人民都积极投入到了复产任务。作为码农的我也紧张了一大段时间,最近在忙几个项目,其中有个app,需要快速搭建预览和测试,于是就直接上了cordova,没想到踩到雷了。

搭建项目没什么问题,只是构建的时候给我来了这么一段:

Requirements check failed for JDK 8 ('1.8.*')! Detected version:11.0.7

Check your ANDROID_SDK_ROOT / JAVA_HOME / PATH environment variables.

提示很明确了,本机jdk11不符合cordova的必需jdk8。原因也清楚,因为前一阵本机环境从jdk8升级到了jdk11。

现在的问题是,我不想再将java_home换回8,因为本机所有项目编译版本都全部更改成了jdk11,如果改回去,没半天时间改不完。(还有很多Eclipse里的历史项目)

我使用的cordova@9.0.0,这个版本是一年前发布的,但是npm里最新的cordova10,还处于nightly版(每日编译版),连rc都不是,明显在生产环境下是不建议用的。也就是说,cordova9是最新稳定版,我不能寄希望于升级cordova改变现状。

另外尝试过在IDE(vscode)里设置java.home,不过没用,这个设置只针对vsc的java插件有效,对cordova无能为力。

想来想去,如果不能让cordova屈服,我就只能面临回退到jdk8的厄运。

因为cordova基于的nodejs,突然想到,所有的提示都应该存在于明文代码。于是一狠心,全项目搜索关键字Requirements check failed for。

还真就检索到了:

位于platforms/android/cordova/lib/check_reqs.js文件里的module.exports.run方法里,相关的有且仅有一处!

它的判断是这样的:

// Returns a promise.
module.exports.run = function () {
    return Q.all([this.check_java(), this.check_android()]).then(function (values) {
        console.log('Checking Java JDK and Android SDK versions');
        console.log('ANDROID_SDK_ROOT=' + process.env['ANDROID_SDK_ROOT'] + ' (recommended setting)');
        console.log('ANDROID_HOME=' + process.env['ANDROID_HOME'] + ' (DEPRECATED)');

        if (!String(values[0]).startsWith('1.8.')) {
            throw new CordovaError(
                'Requirements check failed for JDK 8 (\'1.8.*\')! Detected version: ' + values[0] + '\n' +
                'Check your ANDROID_SDK_ROOT / JAVA_HOME / PATH environment variables.'
            );
        }

        if (!values[1]) {
            throw new CordovaError('Requirements check failed for Android SDK! Android SDK was not detected.');
        }
    });
};

看到了这个1.8的判断条件,同时根据check_java方法也可以明确为判断java环境。于是把“1.8.”直接改成了“11.”,再次编译顺利通过。

后记:

首先我是不推荐任意更改依赖框架源码的,这样不但会影响框架后续更新,也会造成一些未知异常。但没办法,此处仅作为临时解决方案。

我不清楚cordova9是否有只依赖jdk8的关键部分,我也不清楚jdk11会对cordova9造成什么影响,但是我想的很清楚,不管如何要让影响降低到最小,改一处代码,这个影响就真的很小。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值