kaptGenerateStubsDebugKotlin 在 Apple M1 Macbook (JDK 11) 上失败

8
我在新的苹果 M1 Max 芯片的 MacBook 上使用 Android Studio 和命令行运行“./gradlew assembleDebug”都遇到了这个错误。但是在我的老款 Intel Mac 上构建该项目没有问题。
> Task :app:kaptGenerateStubsDebugKotlin FAILED
e: java.lang.IllegalAccessError: class org.jetbrains.kotlin.kapt3.base.KaptContext (in unnamed module @0x4d1ecff7) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x4d1ecff7
        at org.jetbrains.kotlin.kapt3.base.KaptContext.<init>(KaptContext.kt:28)
        at org.jetbrains.kotlin.kapt3.KaptContextForStubGeneration.<init>(KaptContextForStubGeneration.kt:40)
        at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.contextForStubGeneration(Kapt3Extension.kt:287)
        at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:171)
        at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:102)

(这是完整的错误输出)

类 org.jetbrains.kotlin.kapt3.base.KaptContext(在未命名模块 @0x4d1ecff7 中)无法访问类 com.sun.tools.javac.util.Context(位于模块 jdk.compiler 中),因为模块 jdk.compiler 未将 com.sun.tools.javac.util 导出到未命名模块 @0x4d1ecff7 中

通过谷歌搜索,错误消息看起来很像这里的错误消息:“Kapt 与 JDK 16+ 不兼容”。但问题是,我正在使用 JDK 11。(在 Android Studio 的默认JDK(11.0.10)和从 www.oracle.com 下载的“11.0.13 2021-10-19 LTS”上都有相同的结果。)

有什么办法可以在 M1 Mac 上使其正常工作吗?


1
第二天,没有做任何更改,构建现在在Android Studio和命令行上都可以工作了。 ‍♂️ - Jonik
如果它不能正常工作,我接下来想尝试的事情就是根据kapt网站的建议,将kapt替换为KSP。在这个项目中,Moshi使用了kapt,而KSP应该支持它。 - Jonik
我遇到了完全相同的问题。我今天刚开始使用M1 Mac。我有同样的想法,用KSP替换kapt,但是dagger/hilt还不支持。此外,room仍处于实验阶段。目前问题仍然存在。我也在使用Android Studio的默认JDK。 - Jake
4
所以我刚刚重启了我的电脑,神奇地解决了所有问题。 - Jake
1
我在升级到 Kotlin 1.5.32 后(虽然我没有进行严格测试),没有遇到这个问题,该版本已经修复了上面链接的 JDK 16+ 问题。对于 Android,这要求我暂时抑制 Compose 编译器版本警告。像 Jake 一样,我也发现重新启动可以暂时解决这个问题。值得一提的是,我在 Intel MBP 上重现了这个问题,而不是 M1。 - mcomella
看一下这篇帖子,也许可以帮到你:https://dev59.com/z1EG5IYBdhLWcg3wP35V#69555276 - Atif AbbAsi
3个回答

5

4

正如@Jake所写,重新启动计算机不知何故解决了这个问题。


1
很不幸,浪费了这么多时间,结果证明这就是解决办法! - Safeer

0
我在我的 MacBook Air M1 上解决了这个问题,只需更新 Kotlin 版本和所有其他库至最新版本即可,你还需要将 compileSDKVersion 和 targetSDKVersion 更新至最新版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接