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
, и все кажется в порядке.
Если кто-то может помочь решить эту проблему!
Ответы
Ответ 1
После прочтения Дэн Лью post пару дней назад я сделаю предположение, что это может быть вызвано использованием метода Map.forEach { k, v -> }
из Java 8, которые могут быть недоступны в среде выполнения Android.
Вы можете попытаться использовать другой forEach с параметром одиночной записи, который поступает из стандартной библиотеки Kotlin:
mapOfreminders.forEach { (_, finalReminders) -> }
Здесь круглые скобки используются для деструкции входного параметра на две переменные: игнорируемый ключ и значение finalReminders
.