Skip to content

org.jetbrains.kotlin.kapt3.base.javac.KaptJavaCompiler 访问错误解决方案

问题描述

在添加 Firebase Database 依赖后,构建项目时出现以下关键错误:

log
java.lang.IllegalAccessError: superclass access check failed: 
class org.jetbrains.kotlin.kapt3.base.javac.KaptJavaCompiler (in unnamed module) 
cannot access class com.sun.tools.javac.main.JavaCompiler (in module jdk.compiler)
因为模块 jdk.compiler 没有将 com.sun.tools.javac.main 导出给未命名模块

该错误是由于 Java 模块系统访问限制引起的,特别是:

  1. 使用新版本 JDK(如 Java 17/21)时
  2. Kapt(Kotlin注解处理器)尝试访问 JDK 内部未导出的类
  3. JDK 升级后增强了模块访问控制

推荐解决方案

1️⃣ 升级 Kotlin 版本(首选)

升级至 Kotlin 1.9.21+ 可从根本上解决问题(官方修复记录):

groovy
// 项目级 build.gradle
buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23"
    }
}

// 模块级 build.gradle
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.23"
}

2️⃣ 停止 Gradle 守护进程

在终端执行此命令清理旧进程:

bash
./gradlew --stop  # macOS/Linux
gradlew --stop    # Windows

3️⃣ 迁移至 KSP(Kotlin 符号处理器)

Google 官方推荐替代 kapt 的解决方案:

groovy
// 替换 kapt 插件
plugins {
    id "com.google.devtools.ksp" version "1.9.23-1.0.19"
}

// 修改依赖
dependencies {
    // kapt "com.example:processor" → 
    ksp "com.example:processor"
}

官方迁移指南: Migrate from kapt to KSP

其他应对方案

⚠️ 临时解决方法(JDK配置)

gradle.properties 中添加(兼容JDK 17):

properties
org.gradle.jvmargs=\
    --add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
    -Dkotlin.daemon.jvm.options="--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"

WARNING

此方案可能随着 JDK 升级而失效,建议作为临时措施

强制清理残留进程

  1. 查找并终止残留进程
bash
jps | grep KotlinCompileDaemon | awk '{print $1}' | xargs kill -9
  1. Android Studio内解决方案
    • Help > Check for Updates
    • 若提示冲突进程,勾选Kill processes选项

预防措施

  1. 保持环境版本一致

    groovy
    // gradle-wrapper.properties
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
    
    // JDK配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
  2. 定期更新依赖

    groovy
    // 使用新版 Firebase BOM
    implementation(platform("com.google.firebase:firebase-bom:32.8.1"))

完整修复流程

  1. 升级 Kotlin 至 1.9.23
  2. 更新 gradle-wrapper.properties 至 Gradle 8.6
  3. 执行 ./gradlew --stop
  4. 在 Android Studio 中选择 File > Invalidate Caches / Restart
  5. 重新构建项目

若仍存在问题,考虑逐步移除第三方依赖进行排查