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

执行./gradlew build失败:Kapt与JDK模块访问权限异常

问题解决:Kapt与JDK 21模块访问冲突导致build失败

应用可正常构建,但执行./gradlew build时':app:kaptDebugKotlin'任务失败,核心错误为JDK模块未导出com.sun.tools.javac.main包,导致Kapt类无法访问超类。

解决方案:

  • 降级JDK版本到17
    编译配置指定了Java 17的source/target兼容性,当前JDK 21的模块访问限制更严格,而你用的Kotlin 1.8.20对应的Kapt还没完全适配JDK 21。

    • 切换本地JDK为17版本(OpenJDK 17或Oracle JDK 17均可)
    • 若使用Gradle Wrapper,在gradle.properties中指定JDK路径:
      org.gradle.java.home=/path/to/your/jdk17
      
  • 升级Kotlin及KSP插件版本
    Kotlin 1.8.20对JDK 21支持有限,升级到1.9.20及以上版本,同步更新KSP插件:
    修改根项目build.gradle的插件配置:

    plugins {
        id 'com.android.application' version '8.2.1' apply false
        id 'com.android.library' version '8.2.1' apply false
        id 'org.jetbrains.kotlin.android' version '1.9.20' apply false
        id("com.google.gms.google-services") version "4.4.0" apply false
        id("com.google.firebase.appdistribution") version "4.0.0" apply false
        id 'com.google.devtools.ksp' version '1.9.20-1.0.13' apply false
    }
    

    确保模块级build.gradle里的Kotlin版本和根项目一致。

  • 添加JVM参数放宽模块访问(临时方案)
    要是暂时没法降级JDK或升级Kotlin,就在gradle.properties里加JVM参数,让JDK把指定包导出给未命名模块:

    org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
    

内容的提问来源于stack exchange,提问作者Johnny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:27:44