NoClassDefFoundError - Android 2.3.X

时间:2014-11-27 09:48:52

标签: android android-asynctask noclassdeffounderror

我在课堂上定义了一个任务。 致命异常“NoClassDefFoundError”发生在以下行

MyCuteTask myTask = new MyCuteTask(equations)

这是代码

public class MyClass  {

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

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

最近,我有奇怪的错误报告。 Android实例化我的任务时抛出一个异常。 我只有android 2.3.X这个bug。

你们有没有得到同样的错误?

编辑:这是堆栈跟踪

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)

com.mathssolver.main.Logic.updateGraph(Logic.java:310)上的行是

 MyCuteTask myTask = new MyCuteTask(equations)

5 个答案:

答案 0 :(得分:1)

这是一个谷歌游戏服务问题。 (https://code.google.com/p/android/issues/detail?id=81083

在Google修复此问题之前解决此问题的解决方法:

将以下内容添加到Application#onCreate()方法

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

请注意其应用程序#onCreate()而不是Activity#onCreate()

更新:我可以验证上述更改是否为我解决了这些崩溃问题。

答案 1 :(得分:0)

在API级别3中添加了

Asynctask。请通过使用API​​ 3检查相同的代码来验证一个。如果它消失,则存在问题

答案 2 :(得分:0)

这是一个内部类请参考如何通过外部类访问内部类对象,否则在Mainclass外定义Myclass

答案 3 :(得分:0)

我在这里报告了同样的错误:Android: NoClassDefFoundError android.os.AsyncTask 因为它开始发生没有任何应用程序交付它看起来像另一个谷歌播放服务错误... 我在Android 2.3.x上遇到83%的崩溃,在4.0.3&amp ;;崩溃时有16%的崩溃4.0.4

答案 4 :(得分:0)

我遇到了同样的问题,我将AsyncTask的源代码作为MyAsyncTask复制到我的项目中并从该类扩展,现在它可以工作了。