現在、Androidアプリケーションにバージョン1.1.1のKotlinを使用しています。
私のコードでは、いくつかのforEach
とMutableList
を読み取るために、いくつかのMutableMap
構造体を埋め込んでいます。
残念ながら、私のアプリは次のスタックトレースでクラッシュします:
Java.lang.NoClassDefFoundError:com.package.fragment.ReminderAddFragment $ onRetrieveBusinessObjects $$ inlined $ forEach $ lambda $ 1 at com.package.fragment.ReminderAddFragment.onRetrieveBusinessObjects(ReminderAddFragment.kt:275)at com.smartnsoft.Droid4mapp.app .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 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
変数を評価でき、すべてが問題ないようです。
誰かがこの問題の解決を手伝ってくれるなら!
この問題が発生しましたJava.lang.NoClassDefFoundError
on Android 6.0および6.0.1を使用して
Map.forEach {key ,value -> }
この呼び出しJava 8 api。
そして、パラメータに角かっこを追加することでこの問題を解決しました:
Map.forEach {(key ,value) -> }
これはkotlin apiを呼び出します
この特定のエラーはすべての電話で発生するわけではないようです。 Samsung Galaxy S7でも同様の問題に直面しましたが、ClassNotFoundErrorでアプリがクラッシュしました。このソリューションは、ラムダを引き続き使用する場合に機能します。または、ラムダをfor ((key, value) in map) { ... }
に置き換えることもできます。