android - java.lang.NoClassDefFoundError $$inlined$forEach$lambda$1 在 Kotlin

标签 android lambda kotlin

我目前正在使用 1.1.1 版的 Kotlin 开发 Android 应用程序

在我的代码中,为了读取多个 MutableListMutableMap,我使用了多个 forEach 结构。

不幸的是,我的应用程序因以下堆栈跟踪而崩溃:

java.lang.NoClassDefFoundError: com.package.fragment.ReminderAddFragment$onRetrieveBusinessObjects$$inlined$forEach$lambda$1 at com.package.fragment.ReminderAddFragment.onRetrieveBusinessObjects(ReminderAddFragment.kt:275) at com.smartnsoft.droid4me.app.Droid4mizer.onRetrieveBusinessObjects(Droid4mizer.java:552) at com.smartnsoft.droid4me.app.Droid4mizer.onRetrieveBusinessObjectsInternal(Droid4mizer.java:606) at com.smartnsoft.droid4me.app.Droid4mizer.access$000(Droid4mizer.java:46) at com.smartnsoft.droid4me.app.Droid4mizer$1.run(Droid4mizer.java:197) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

这里是代码

tutorialCategories.forEach { (_, _, _, _, _, tutorials) ->
  tutorials.forEach { tutorial ->
    if (tutorial.id == simpleReminderFromExtra.tutorialId)
    {
      //...
      val mapOfreminders = mutableMapOf<Int, MutableList<Reminder>>()
      val reminders = ReminderServices.getReminderByTutorialId(simpleReminderFromExtra.tutorialId)

      reminders.forEach { reminder ->
        //...
      }

      mapOfreminders.forEach { _, finalReminders ->
        //...

        finalReminders.forEach { reminder ->
          //...
        }

        //...
      }
    }
  }
}

地点:

  • tutorialCategories 是一个 List ;
  • tutorials 是一个 List ;
  • reminders 是一个 List ;

代码的第 275 行是 mapOfreminders.forEach { _, finalReminders ->

在调试器中,我可以评估 mapOfreminders 变量,一切似乎都很好。

如果有人可以帮助解决这个问题!

最佳答案

阅读 Dan Lew 的 post几天前,我会提出一个建议,这可能是由于使用 Map.forEach { k, v -> } 造成的。 Java 8 中的方法,在 Android 运行时可能不可用。

您可以尝试使用另一个 forEach使用来自 Kotlin 标准库的单入口参数:

mapOfreminders.forEach { (_, finalReminders) -> }

这里的括号用于将入口参数解构为两个变量:被忽略的键和finalReminders值(value)。

关于android - java.lang.NoClassDefFoundError $$inlined$forEach$lambda$1 在 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869086/

相关文章:

java - 连接 JSONArrays

android - 如何为gridview android提供单线边框

c++ - Gtk+ g_signal_connect() 和 C++ lambda 导致 "invalid cast"错误

python - 为什么 lambda 函数中的括号会导致 Python 3 上的语法错误?

android - 使用 kotlin 时制作实体和 Dao 文件的官方/正确方法是什么

android - 我如何在没有初始化的情况下在 Kotlin 中声明一个可以从类中的任何 fun 访问的 val?

php - 如何在android和php中将选定的多个复选框值插入到mysql数据库的不同行中

java - 比较两个 Date() 的正确方法是什么?

c# - 具有多个连接的 Lambda 返回强类型对象

loops - Kotlin 中 `break` 中的 `continue` 和 `forEach`