Android Studio(Java)中Realm本地数据库构建失败问题求助
解决Realm与AGP 8.0+、Java 11的构建IllegalAccessError问题
问题场景
当前配置如下:
项目级build.gradle:
buildscript { repositories { mavenCentral() } dependencies { classpath "io.realm:realm-gradle-plugin:10.15.0" } }
应用级build.gradle:
apply plugin: "realm-android" implementation 'io.realm:realm-gradle-plugin:10.15.0'
构建时触发错误:
> java.lang.IllegalAccessError: class io.realm.processor.Utils (in unnamed module @0x319c63c6) cannot access class com.sun.tools.javac.code.Symbol$ClassSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x319c63c6
环境:AGP 8.0.0、Gradle 8.1、Java 11、minSdk 24、targetSdk 33
问题原因
Realm 10.15.0属于旧版本,未适配AGP 8.0+和Java 9+引入的模块系统限制。旧版本的Realm注解处理器依赖了JDK内部未公开的API(com.sun.tools.javac.code相关类),而Java 9+的模块系统默认禁止未命名模块访问这些内部API,导致构建时抛出权限错误。
解决方案
方案1:升级Realm到兼容版本(推荐)
Realm从10.17.0版本开始支持AGP 7.4+,建议直接升级到最新稳定版(如10.21.1),同时修正错误的依赖配置:
- 更新项目级
build.gradle中的插件版本:buildscript { repositories { mavenCentral() } dependencies { classpath "io.realm:realm-gradle-plugin:10.21.1" } } - 修改应用级
build.gradle,移除错误的implementation 'io.realm:realm-gradle-plugin:10.15.0'(插件不需要作为应用依赖添加),只保留插件引用:
若使用Gradle新的Plugins DSL,推荐这样配置:apply plugin: "realm-android"- 项目级
settings.gradle:pluginManagement { repositories { gradlePluginPortal() mavenCentral() } } - 应用级
build.gradle:plugins { id 'com.android.application' id 'io.realm.android' version '10.21.1' }
- 项目级
方案2:临时添加JVM参数绕过限制(不推荐长期使用)
如果暂时无法升级Realm,可以在项目根目录的gradle.properties中添加以下参数,允许注解处理器访问JDK内部API:
org.gradle.jvmargs=--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
注意:该方案只是临时 workaround,未来JDK版本可能彻底关闭这类内部API的访问权限。
方案3:确认Java版本配置正确性
确保项目中Java版本配置与环境一致,在应用级build.gradle中添加:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } // 若使用Kotlin,需同步配置 kotlinOptions { jvmTarget = "11" } }
内容的提问来源于stack exchange,提问作者Dushyant Kumar Behera
相关产品推荐
相关产品推荐

