【问题标题】:Android: Giving a LinearLayoutManager to a RecyclerView results in Failed resolution of: Lkotlin/jvm/internal/IntrinsicsAndroid:将 LinearLayoutManager 提供给 RecyclerView 会导致解析失败:Lkotlin/jvm/internal/Intrinsics
【发布时间】:2018-09-25 06:06:02
【问题描述】:

当我被告知这会导致 java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics; 时,我只是给出了 RecyclerView LinearLayoutManager

这是有问题的代码:

var linearLayoutManager : LinearLayoutManager? = LinearLayoutManager(this)
messages.layoutManager = linearLayoutManager

在进一步检查扔给我的Error 后,我被告知我在路径中缺少kotlin.jvm.internal.Intrinsics

无论我是否使用kotlin-kapt,都会发生这种情况,顺便说一下,我已经禁用了kapt,因为kapt 使我的Android 数据绑定陷入困境。

然后我重新启用 kotlin-kapt 并禁用 Android 数据绑定,并相应地调整了我的布局。不过,没有这样的运气。

然后,我删除了我的 Gradle 缓存并重新启动了 Android Studio。 IDE 告诉我 Kotlin 现在是 1.2.71。尽管如此,kapt 和 Android 数据绑定仍然无法相处。我得到了同样的错误信息。

更新:我的 Kotlin Gradle 插件是 1.2.70,后来变成了 1.2.71。我也刚刚将我的 Android Studio 更新到 3.2,我的 Gradle 插件更新到 4.6(因此我的 com.android.tools.build.gradle 是 3.2.0)同样的事情发生了。

我想知道我做错了什么。

【问题讨论】:

  • 你可以试试这个:删除?从这个声明: var linearLayoutManager : LinearLayoutManager? = 线性布局管理器(这个)
  • 不是,因为messages.layoutManager属于LinearLayoutManager?并期待一个 LinearLayoutManager 的实例?也是。
  • @MonicaLabbao,你的build.gradle中有apply plugin: 'kotlin-android'吗?
  • @ConstOrVar 是的 :)
  • val linearLayoutManager : LinearLayoutManager = LinearLayoutManager(this)

标签: android kotlin


【解决方案1】:

试试 messages.layoutManager = LinearLayoutManager(this) as RecyclerView.LayoutManager

【讨论】:

    【解决方案2】:

    问题实际上在于android.arch.lifecycle:extensions:1.1.1 如何与 Dagger 2.17 相处:https://github.com/google/dagger/issues/1245。我通过以下方式解决了问题:

    1. 忽略包含我的ext 的外部Gradle 脚本文件,因此传统上使用我的build.gradle 上的字符串文字来管理依赖项
    2. 按照此处链接中的建议将 Dagger 依赖项和 annotationProcessors 降级到 2.16。

    但是,我的 JVM 可能存在潜在问题,因此,我正在考虑重新安装我的 JVM。

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      相关资源
      最近更新 更多