获取NoClassDefFoundError:android.os.AsyncTask

这个问题一直困扰着我,我找不到一个满意的解决scheme。

很多时候(并不总是)在Android模拟器上创build一个特定的对象,我得到了NoClassDefFoundError:android.os.AsynchTask。

我已经尝试了很多方法删除和重新添加外部库多次,擦拭模拟器,重新启动IntelliJ(工作一次,但后来得到同样的错误。)在这一点上,我所要做的是构build最准系统的AsyncTask,我仍然得到错误。

这是整个错误信息:

08-06 16:24:43.546: ERROR/AndroidRuntime(331): FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android.os.AsyncTask at com.myapp.activity.StatisticsActivity.onCreate(StatisticsActivity.java:79) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) at android.app.ActivityThread.access$2300(ActivityThread.java:125) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4627) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) at dalvik.system.NativeStart.main(Native Method) 

模拟器运行2.2,我的minSDK是8.这里是有问题的代码:

 public class StatisticsActivity extends TabActivity implements AsynchDataDisplay{ ... public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.statistics); StatisticsProvider sp = new StatisticsProvider(); ... } } 

而StatisticsProvider对象是:

  private class StatisticsProvider extends AsyncTask{ @Override protected Object doInBackground(Object... objects) { return null; } } 

Related of "获取NoClassDefFoundError:android.os.AsyncTask"

好的,看起来这是Google Play服务的其中一个版本的问题。 请参阅https://code.google.com/p/android/issues/detail?id=81083

看起来像一个工作可能会添加:

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

进入你的Application#onCreate()

如果你还没有一个应用程序类,然后创build一个从android.app.Application

  1. 将上面的代码添加到其#onCreate()
  2. 在AndroidManifest的应用程序元素中添加对应用程序类的引用。
 <application android:icon="@drawable/icon_game_launcher" android:label="@string/app_name" android:name="au.com.mycompany.myapp.MyApplication"> 

我想我已经破解了。

用于在我的应用程序中加载广告的线程会在早期抛出一个未捕获的exception,以某种我不能100%理解的方式导致工作线程停止响应。 当程序试图创buildAsyncTask时,类加载器不工作。

道德,休假,新鲜的眼睛回来。

尝试在StatisticsProvider中添加一个简单的构造函数并检查。