java.lang.NoClassDefFoundError $$ $$在Kotlin中内联$ forEach $ lambda $ 1 [英] java.lang.NoClassDefFoundError $$inlined$forEach$lambda$1 in Kotlin
问题描述
我目前正在与Kotlin一起在1.1.1版中开发Android应用程序
I am currently working on an Android application with Kotlin in version 1.1.1
在我的代码中,我具有多个forEach
结构的含义,以便读取多个MutableList
和MutableMap
.
In my code, I have imbrication of several forEach
structures in order to read several MutableList
and MutableMap
.
不幸的是,我的应用程序崩溃并显示以下堆栈跟踪:
Unfortunately, my app crashes with the following stacktrace :
java.lang.NoClassDefFoundError: com.package.fragment.ReminderAddFragment $ onRetrieveBusinessObjects $$内联$ forEach $ lambda $ 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)
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
;
tutorialCategories
is aList
;tutorials
is aList
;reminders
is aList
;
代码的第275行是mapOfreminders.forEach { _, finalReminders ->
.
在调试器中,我可以评估mapOfreminders
变量,一切似乎都很好.
In the debugger, I can evaluate the mapOfreminders
variable and everything seems to be alright.
如果有人可以帮助您解决此问题!
If someone can help to resolve this issue !
推荐答案
After reading Dan Lew's post a couple days ago, I'll make a suggestion that this can be caused by using Map.forEach { k, v -> }
method from Java 8, which may be unavailable in Android runtime.
您可以尝试使用另一个 forEach 带有来自Kotlin标准库的单个输入参数:
You could try to use another forEach with the single entry parameter that comes from the Kotlin standard library:
mapOfreminders.forEach { (_, finalReminders) -> }
此处,括号用于将输入参数分解为两个变量:被忽略的键和finalReminders
值.
Here the parentheses are used to destructure entry parameter into two variables: ignored key and finalReminders
value.
这篇关于java.lang.NoClassDefFoundError $$ $$在Kotlin中内联$ forEach $ lambda $ 1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!