Подтвердить что ты не робот

Java.lang.NoClassDefFoundError $$ inlined $forEach $lambda $1 в Котлине

В настоящее время я работаю над Android-приложением с Kotlin в версии 1.1.1

В моем коде у меня есть привязка нескольких структур forEach, чтобы читать несколько MutableList и MutableMap.

К сожалению, мое приложение вылетает со следующей командой stacktrace:

java.lang.NoClassDefFoundError: com.package.fragment.ReminderAddFragment $onRetrieveBusinessObjects $$ встраиваемого $Foreach $лямбда $1 в com.package.fragment.ReminderAddFragment.onRetrieveBusinessObjects(ReminderAddFragment.kt: 275) в com.smartnsoft.droid4me.app.Droid4mizer.onRetrieveBusinessObjects(Droid4mizer.java:552) в com.smartnsoft.droid4me.app.Droid4mizer.onRetrieveBusinessObjectsInternal(Droid4mizer.java:606) в com.smartnsoft.droid4me.app.Droid4mizer.access $000 (Droid4mizer.java:46) на com.smartnsoft.droid4me.app.Droid4mizer $1.run(Droid4mizer.java:197) в java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:423) в java.util.concurrent.FutureTask.run(FutureTask.java:237) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) в java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:588) в 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, и все кажется в порядке.

Если кто-то может помочь решить эту проблему!

4b9b3361

Ответ 1

После прочтения Дэн Лью post пару дней назад я сделаю предположение, что это может быть вызвано использованием метода Map.forEach { k, v -> } из Java 8, которые могут быть недоступны в среде выполнения Android.

Вы можете попытаться использовать другой forEach с параметром одиночной записи, который поступает из стандартной библиотеки Kotlin:

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

Здесь круглые скобки используются для деструкции входного параметра на две переменные: игнорируемый ключ и значение finalReminders.