【问题标题】:Cannot compile since updating kotlin to 1.6.10 & room 2.4.1将 kotlin 更新到 1.6.10 & room 2.4.1 后无法编译
【发布时间】:2022-06-26 03:31:29
【问题描述】:

自从我升级到 Kotlin 1.6.10 和 room 到 2.4.0 后,我遇到了一个错误。错误不清楚,所以我真的不知道从哪里开始寻找。

任务 ':app:kaptDebugKotlin' 执行失败。 执行 org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction 时发生故障 java.lang.reflect.InvocationTargetException(没有错误信息)

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。运行 --scan 以获得完整的见解。

我猜我的实体中有一些不兼容的东西,但是当降级时,一切都完美无缺。我的问题是:我怎样才能发现问题所在?对我来说,这些错误非常模糊。

当我运行 gradlew --scan 时,它说我的 JVM 仍然是 1.8,但我已经到处更新到 11。

编辑: 通过更改 org.gradle.java.home 属性,我设法使用 11 强制我的 Gradle。现在它给了我以下错误:

 A failure occurred while executing
 org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
  (No message provided)
    (No message provided)
      java.lang.IllegalArgumentException: <nulltype> cannot be represented as a Class<?>.
       <nulltype> cannot be represented as a Class<?>.

EDIT2

我在另一个 StackOverflow 线程中读到,我应该将 AS 更新到我所做的最新补丁。不幸的是,这没有帮助。

EDIT3

似乎房间版本(2.4.1)也是问题的一部分。当降级除房间之外的所有东西时,它仍然是一个错误。如果我尝试使用 kotlin 1.5.31、room 2.3.0 & compose 1.0.5 运行,它运行良好。

EDIT4

升级到房间 2.4.2 并添加 KSP 后,我收到以下错误:

[ksp] [MissingType]: Element 'be.tradecom.kraken.objects.parts.Part' references a type that is not present - be.tradecom.kraken.objects.parts.Part

在搜索此错误时,我只得到 1 个遇到相同问题并通过升级到 Kotlin 1.6.0 修复它的人的结果。我尝试从 1.6.10 降级到 1.6.0,但是 compose 1.1.0 需要 1.6.10。

我删除了第一个错误的大部分内容,因为我达到了字符数限制,我认为这不再重要了。

【问题讨论】:

标签: android-studio gradle android-room


【解决方案1】:

我通过以下步骤修复了这个错误:

1- 确保 Gradle JDK 设置为“嵌入式 JDK 版本 11.0.12/snap/android-studio/121/android-studio/jre”

2- 使缓存失效 - 勾选两个选项,包括“清除文件系统缓存和本地历史记录”然后“失效并重新启动”

3- 在 AD 菜单中转到文件 -> 项目结构 -> 在左侧菜单中选择“建议”并升级那里列出的所有组件。

4- 将 compileSdk 31 更改为 compileSdk 32

我还发现这篇文章很有帮助:https://stackoverflow.com/a/62919508/17650331

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多