执行./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
相关产品推荐
相关产品推荐

