集成Flutter模块的Java项目编译报错:NoClassDefFoundError
解决Flutter集成Java项目编译时的
java.lang.NoClassDefFoundError问题 编译集成Flutter模块的Java项目时碰到Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7报错,改了Gradle版本还没解决?试试下面这些办法:
检查Groovy与Gradle、JDK的版本兼容性
这个报错大概率是版本不匹配导致的。高版本Gradle需要对应版本的Groovy,旧Groovy在高JDK环境下对Java7的VM插件支持有问题。
打开项目根目录的Project级build.gradle,找到buildscript里的classpath配置,调整Groovy版本:buildscript { dependencies { // 比如Gradle 7.x+搭配Groovy 3.0.x版本 classpath 'org.codehaus.groovy:groovy-all:3.0.9' } }同时确保Android Gradle插件(
com.android.tools.build:gradle)和Gradle版本匹配,比如Gradle 7.0对应AGP 7.0.0。确认JDK版本配置
JDK版本过高或过低都可能触发这个问题,比如用JDK11+时,旧Groovy版本会出问题。- 在Android Studio里通过
File → Project Structure → Project设置JDK位置,推荐Gradle7.x以上搭配JDK11; - 也可以在项目根目录的
gradle.properties里直接指定:org.gradle.java.home=/你的JDK11路径
- 在Android Studio里通过
清理缓存重新同步
缓存残留也会导致版本冲突:- 点击Android Studio的
File → Invalidate Caches...,选择Invalidate and Restart; - 手动删掉项目根目录的
.gradle和build文件夹,然后执行gradle clean build命令。
- 点击Android Studio的
检查Flutter模块的Gradle配置
集成的Flutter模块可能自带Gradle配置和主项目冲突:- 进入Flutter模块的
android目录,检查其gradle-wrapper.properties和build.gradle的版本,确保和主项目一致; - 执行
flutter clean清理Flutter缓存,再重新同步项目。
- 进入Flutter模块的
内容的提问来源于stack exchange,提问作者Nikita Shadkov
相关产品推荐
相关产品推荐

