• 7
name

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191

Backtrace:

File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

I am currently working on an Android application with Kotlin in version 1.1.1

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$$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)

Here the code

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 ->
          //...
        }

        //...
      }
    }
  }
}

Where :

  • tutorialCategories is a List ;
  • tutorials is a List ;
  • reminders is a List ;

The line 275 of the code is mapOfreminders.forEach { _, finalReminders ->.

In the debugger, I can evaluate the mapOfreminders variable and everything seems to be alright.

If someone can help to resolve this issue !

      • 2
    • Can you post more context, like your includes and variable definitions? Can you, somehow fetch the version in code before the crash? If you are getting a no class-def error, you are either distributing your binary without the required dependencies, or are running with a different version then you built with.

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.

You could try to use another forEach with the single entry parameter that comes from the Kotlin standard library:

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

Here the parentheses are used to destructure entry parameter into two variables: ignored key and finalReminders value.

  • 73
Reply Report

I encountered this problemjava.lang.NoClassDefFoundError on Android 6.0 and 6.0.1 by using

Map.forEach {key ,value -> }

this call java 8 api.

And then, I solved this problem by adding brackets to parameter:

Map.forEach {(key ,value) -> }

this call kotlin api

  • 12
Reply Report

Seems like this particular error doesn't happen on all phones. I faced a similar issue with Samsung Galaxy S7, where the app was crashing with ClassNotFoundError. This solution works if we still want to use lambda. Else replacing the lambda with for ((key, value) in map) { ... }also works.

  • 1
Reply Report