Cordova CLI构建Gradle报错:java.lang.NoClassDefFoundError问题咨询
解决Cordova构建时
java.lang.NoClassDefFoundError: com/android/build/gradle/internal/ToolingRegistryProvider错误 这个错误大概率是Gradle版本与Android Gradle插件版本不兼容导致的,结合你给出的环境信息(Gradle 4.4.1),我给你几个针对性的解决方向:
1. 调整Android Gradle插件版本以匹配Gradle
Gradle 4.4.1对应的Android Gradle插件版本应该在3.1.x到3.2.x区间(官方兼容性规则:Gradle 4.1-4.5对应插件3.0-3.2)。你可以修改Cordova项目内的platforms/android/build.gradle文件:
- 找到
buildscript块中的dependencies部分,将com.android.tools.build:gradle的版本调整为兼容值,比如:
dependencies { classpath 'com.android.tools.build:gradle:3.2.1' }
2. 确保Cordova Android平台版本与Gradle兼容
不同的Cordova Android平台版本对Gradle和Android插件有明确的适配要求:
- 比如Cordova Android 7.x系列适配Gradle 4.x + Android插件3.x;如果你的Cordova Android版本偏旧,建议执行以下命令升级:
cordova platform remove android cordova platform add android@7.1.4
这个版本和Gradle 4.4.1的兼容性经过验证,比较稳定。
3. 锁定项目的Gradle版本
虽然你已经安装了Gradle 4.4.1,但要避免系统中多版本Gradle冲突,建议在项目根目录的gradle/wrapper/gradle-wrapper.properties里指定固定版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
同时确认系统环境变量GRADLE_HOME指向D:\gradle\gradle-4.4.1,且%GRADLE_HOME%\bin已添加到PATH中。
4. 清理缓存后重新构建
缓存残留也可能引发这类奇怪的依赖错误,执行以下命令清理后再尝试构建:
cordova clean android cordova build android
核心思路就是让Gradle版本、Android Gradle插件版本、Cordova Android平台版本三者互相匹配,这是Cordova Android构建时最容易踩的兼容性坑~
内容的提问来源于stack exchange,提问作者kmno
相关产品推荐
相关产品推荐

