You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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),同时修正错误的依赖配置:

  1. 更新项目级build.gradle中的插件版本:
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "io.realm:realm-gradle-plugin:10.21.1"
        }
    }
    
  2. 修改应用级build.gradle,移除错误的implementation 'io.realm:realm-gradle-plugin:10.15.0'(插件不需要作为应用依赖添加),只保留插件引用:
    apply plugin: "realm-android"
    
    若使用Gradle新的Plugins DSL,推荐这样配置:
    • 项目级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:17:10