1

I have a Task defined in a class. Fatal exception "NoClassDefFoundError" is happening on following line

MyCuteTask myTask = new MyCuteTask(equations)

Here is the code

public class MyClass  {

    public void run() {
        MyCuteTask myTask = new MyCuteTask(equations)
    }

    protected class MyCuteTask extends  AsyncTask<String, Integer, String> {
        ...
    }
}

Recently, I have strange bug reports. Android throw an exception when I instantiate my task. I have this bug with android 2.3.X only.

Do any of you got the same bug?

EDIT: Here is the stack Trace

java.lang.NoClassDefFoundError: com.mathssolver.main.k
   at com.mathssolver.main.Logic.updateGraph(Logic.java:310)
   at com.mathssolver.main.Graph.update(Graph.java:249)
   at com.mathssolver.main.MathGraphFragment.plotFunction(MathGraphFragment.java:236)
   at com.mathssolver.main.MathGraphFragment.plot(MathGraphFragment.java:158)
   at com.mathssolver.main.MathGraphFragment.showExample(MathGraphFragment.java:141)
   at com.mathssolver.main.MathGraphFragment.onStart(MathGraphFragment.java:109)
   at android.support.v4.app.Fragment.performStart(Fragment.java:1810)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:977)
   at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:842)
   at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1150)
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1506)
   at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
   at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
   at android.view.View.measure(View.java:8323)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewRoot.performTraversals(ViewRoot.java:842)
   at android.view.ViewRoot.handleMessage(ViewRoot.java:1862)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:130)
   at android.app.ActivityThread.main(ActivityThread.java:3806)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:507)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
   at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.ClassNotFoundException: com.mathssolver.main.k in loader dalvik.system.PathClassLoader[/data/app/com.shakti.mathssolver-1.apk]
   at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
   at com.mathssolver.main.Logic.updateGraph(Logic.java:310)
   at com.mathssolver.main.Graph.update(Graph.java:249)
   at com.mathssolver.main.MathGraphFragment.plotFunction(MathGraphFragment.java:236)
   at com.mathssolver.main.MathGraphFragment.plot(MathGraphFragment.java:158)
   at com.mathssolver.main.MathGraphFragment.showExample(MathGraphFragment.java:141)
   at com.mathssolver.main.MathGraphFragment.onStart(MathGraphFragment.java:109)
   at android.support.v4.app.Fragment.performStart(Fragment.java:1810)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:977)
   at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:842)
   at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1150)
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1506)
   at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
   at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
   at android.view.View.measure(View.java:8323)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
   at android.view.View.measure(View.java:8323)
   at android.view.ViewRoot.performTraversals(ViewRoot.java:842)
   at android.view.ViewRoot.handleMessage(ViewRoot.java:1862)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:130)
   at android.app.ActivityThread.main(ActivityThread.java:3806)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:507)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
   at dalvik.system.NativeStart.main(NativeStart.java)

Line at com.mathssolver.main.Logic.updateGraph(Logic.java:310) is

 MyCuteTask myTask = new MyCuteTask(equations)
Shakti Malik
  • 2,335
  • 25
  • 32

5 Answers5

1

Its an google play services issue. (https://code.google.com/p/android/issues/detail?id=81083)

Workaround to avoid this crash till Google fixes it:

Add following into your Application#onCreate() method

try {
  Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
  // ignored
}

Note its Application#onCreate() and not Activity#onCreate()

Update: I can verify that above changes fixed these crashes for me.

Shakti Malik
  • 2,335
  • 25
  • 32
0

Asynctask was added in API level 3. Please verify one by checking the same code with API 3. If it disappears, there is your problem

A Nice Guy
  • 2,676
  • 4
  • 30
  • 54
0

This is an inner class please refer how to access the inner class object through outerclass else define your Myclass outside the Mainclass

therealprashant
  • 701
  • 15
  • 27
0

I reported the same error here: Android: NoClassDefFoundError android.os.AsyncTask Because it started happening without any app delivery it looks like yet another Google Play Services bug... I'm having 83% of crashes on Android 2.3.x and 16% on crashes on 4.0.3 & 4.0.4

Community
  • 1
  • 1
user1026605
  • 1,633
  • 4
  • 22
  • 58
  • For me, all of the crashes are on android 2.3.x. I am not sure how can it be related to GooglePlayServices because AnsycTask is not part of GooglePlayServices. – Shakti Malik Nov 27 '14 at 13:37
  • 1
    Yes I know it's part of the Android SDK, but this is the only that has changed on the user device. My app hasn't been updated, they didn't get any Android update, only the new version of the Google Play Services has just been pushed, and almost everytime it comes with some strange bug... – user1026605 Nov 27 '14 at 13:42
0

I had the same problem and I have copied source code of the AsyncTask as MyAsyncTask into my project and extended from that class, now it works.

user65721
  • 2,833
  • 3
  • 19
  • 28