【问题标题】:kaptGenerateStubsDebugKotlin fails on a Apple M1 Macbook (JDK 11)kaptGenerateStubsDebugKotlin 在 Apple M1 Macbook (JDK 11) 上失败
【发布时间】:2022-04-20 17:12:12
【问题描述】:

我在 Android Studio 和在带有 Apple M1 Max 芯片的新 Macbook 的命令行上运行 ./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)

(Here's the full error output)

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

四处搜索,错误消息看起来很像这里的错误消息:“Kapt is not compatible with JDK 16+”。但问题是,我使用的是 JDK 11。(Android Studio 的默认 JDK (11.0.10) 和从 www.oracle.com 下载的“11.0.13 2021-10-19 LTS”的结果相同。)

任何想法如何让它在 M1 Mac 上工作?

【问题讨论】:

  • 第二天,在没有进行任何更改的情况下,构建现在可以在 Android Studio 和命令行中运行。 ????‍♂️
  • 如果它不起作用,我想尝试的下一件事就是按照 kapt 网站上的建议将 kapt 替换为 KSP。 kapt 在这个项目中用于 Moshi,KSP 应该支持它。
  • 我遇到了同样的问题。我今天才开始使用 M1 mac。我对用 KSP 替换 kapt 有相同的想法,但尚不支持 dagger/hilt。房间还处于实验阶段。这个问题目前仍然存在。我也在使用 Android Studio 的默认 JDK。
  • 所以我刚刚重启了我的机器,它神奇地修复了一切????
  • 我在升级到 kotlin 1.5.32 后没有看到这个问题(虽然我还没有进行过可靠的测试),上面链接了 the JDK 16+ issue 的修复程序。对于 Android,这需要我禁止 Compose Compiler 版本警告。像 Jake 一样,我也发现重新启动暂时解决了这个问题。 fwiw,我在英特尔 MBP 上复制了这个,而不是 M1。

标签: android kotlin apple-m1 kapt


【解决方案1】:

从 mcomella 分享的链接 - https://youtrack.jetbrains.com/issue/KT-45545,他们已在 Kotlin 1.6.x 中修复它。

所以碰到 Kotlin 1.6.x 对我的情况(Apple M1 Pro)有用。

【讨论】:

    【解决方案2】:

    我在我的 MacBook Air M1 中解决了这个问题,将 Kotlin 版本和所有其他库更新为最新版本,您还必须更新 compileSDKVersion 和 targetSDKVersion 以获得最新版本。

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2021-09-22
      • 2022-01-06
      • 2021-09-01
      • 2021-09-11
      相关资源
      最近更新 更多