在Android Studio中运行Flutter代码报IllegalAccessError错误如何解决?
问题根因
该错误为Gradle版本与JDK版本不兼容导致:JDK 16及以上版本收紧了模块化访问规则,你当前使用的Gradle版本未适配该规则,无法访问JDK内部的com.sun.tools.javac.code包下的类,就会抛出该非法访问错误。
你提供的flutter doctor运行结果显示所有Flutter依赖均已配置正常,无需额外补全环境组件。
解决方案
- 方案1:使用Android Studio自带的适配JDK(推荐,无需修改项目配置)
打开Android Studio进入项目,依次选择File > Settings > Build, Execution, Deployment > Build Tools > Gradle,在「Gradle JDK」下拉选项中选择Embedded JDK,应用设置后重新构建项目即可。
如果使用命令行运行项目,可临时指定JAVA_HOME为Android Studio自带JDK路径:- Windows默认路径:
C:\Program Files\Android\Android Studio\jre - Mac默认路径:
/Applications/Android Studio.app/Contents/jre/Contents/Home - Linux默认路径:
/opt/android-studio/jre
- Windows默认路径:
- 方案2:升级项目Gradle版本匹配本地高版本JDK
如果要继续使用你本地安装的高版本JDK,可升级项目的Gradle配置:
- 打开项目
/android/gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl字段的Gradle版本,JDK17对应需要Gradle 7.3+版本,示例:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
- 打开项目
/android/build.gradle文件,升级Android Gradle插件版本到对应匹配版本,Gradle 7.4对应插件版本为7.0.0+,示例:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.0.4' } }
修改完成后同步Gradle重新运行项目即可。
- 方案3:降级全局JDK到JDK11
如果不想逐个修改项目配置,可将本地全局安装的JDK版本降级到JDK11,该版本是当前Flutter安卓构建兼容性最好的JDK版本,降级后配置好JAVA_HOME环境变量即可全局生效。
内容的提问来源于stack exchange,提问作者UrDistraction
相关产品推荐
相关产品推荐

