java.lang.NoClassDefFoundError:android.os.AsyncTask
Android 2.2设备上的奇怪错误。以下内容适用于所有设备,我们直到最近才在GT-I5510中遇到此错误。我们的应用程序支持min sdk level 8。清除设置中的应用程序数据并启动应用程序修复了此问题,但我不理解为什么无法找到类。添加了安卓支持库java.lang.NoClassDefFoundError:android.os.AsyncTask,android,android-asynctask,android-async-http,android-os-handler,Android,Android Asynctask,Android Async Http,Android Os Handler,Android 2.2设备上的奇怪错误。以下内容适用于所有设备,我们直到最近才在GT-I5510中遇到此错误。我们的应用程序支持min sdk level 8。清除设置中的应用程序数据并启动应用程序修复了此问题,但我不理解为什么无法找到类。添加了安卓支持库 java.lang.NoClassDefFoundError: android.os.AsyncTask at com.example.android.library.stTest.stController.runTe
java.lang.NoClassDefFoundError: android.os.AsyncTask
at com.example.android.library.stTest.stController.runTests(stController.java:228)
at com.example.android.myapp.Fragments.Connection.ConnectionFragment$1.run(ConnectionFragment.java:69)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4628)
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:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.
//stController.java line is this
pTest = new Test(context, this);
//does an async task
pTest.execute(pTestData);
public class Test extends AbstractTest<TestData, Void, TestData> {
private static final String LOG_TAG = Debug.LOG_TAG_+"Test";
private TestListener callback; // Invoking object that implements the callback listeners
/**
* Constructor
* @param context
* @param callback - the object that implements TestListener for the results.
*/
public Test(final Context context, final TestListener callback) {
super(context);
// Debug.v(LOG_TAG, "Constructor called.");
this.callback = callback;
}
@Override
protected TestData doInBackground(final TestData... args) {
TestData TestData = args[0];
if (!isTestPossible()) {
TestData.setTestState(TestState.FAILED_TO_RUN);
} else {
TestData.setLocalIpAddress(Utils.getLocalIpAddress());
try {
TestData.setTestState(TestState.RUNNING);
runTest(TestData);
TestData.setTestState(TestState.FINISHED);
} catch (Exception e) {
Debug.e(LOG_TAG, "doInBackground(): runTest() exception: " + e);
TestData.setTestState(TestState.FAILED_TO_RUN);
}
}
return TestData;
}
@Override
protected void onPostExecute(TestData results) {
if (callback == null) {
Debug.e(LOG_TAG, "onPostExecute(): listener callback is null!!");
} else {
Debug.v(LOG_TAG, "onPostExecute() called. Results: " + results.toString());
callback.onTestComplete(results);
callback = null; // Release reference to listener
}
}
@Override
protected void onCancelled(TestData results) {
if (callback == null) {
Debug.e(LOG_TAG, "onCancelled(results): listener callback is null!!");
} else {
callback.onTestCancelled(results);
callback = null; // Release reference to listener
}
}
// This version is also needed for older OS.
@Override
protected void onCancelled() {
if (callback == null) {
Debug.e(LOG_TAG, "onCancelled(): listener callback is null!!");
} else {
Debug.v(LOG_TAG, "onCancelled() called.");
callback.onTestCancelled(null);
callback = null; // Release reference to listener
}
}
// C++ functions.
// This function runs the actual test.
private native void runTest(TestData TestData);
}
//Abstract Test
public class AbstractTest <T1, T2, T3> extends AsyncTask<T1, T2, T3> {
protected TelephonyManager teleMan;
protected ConnectivityManager connMan;
private Context testContext;
public AbstractTest(final Context context) {
teleMan = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
connMan = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
testContext=context;
}
protected boolean isTestPossible() {
if (!Utils.isNetworkAvailable(testContext))
{
return false;
}
String localIpAddress = Utils.getLocalIpAddress();
if (localIpAddress == null || localIpAddress == "") {
Debug.w(LOG_TAG, "isTestPossible(): no local IP address!!");
return false;
}
return true;
}
@Override
protected T3 doInBackground(T1... params) {
return null;
}
}
java.lang.NoClassDefFoundError:android.os.AsyncTask
位于com.example.android.library.stTest.stController.runTests(stController.java:228)
位于com.example.android.myapp.Fragments.Connection.ConnectionFragment$1.run(ConnectionFragment.java:69)
位于android.os.Handler.handleCallback(Handler.java:587)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:4628)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:521)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
在dalvik.system.NativeStart。
//这是stController.java行吗
pTest=新测试(上下文,本);
//执行异步任务
pTest.execute(pTestData);
公共类测试扩展了抽象类测试{
私有静态最终字符串LOG_TAG=Debug.LOG_TAG_u+“Test”;
私有TestListener回调;//调用实现回调侦听器的对象
/**
*建造师
*@param上下文
*@param callback-为结果实现TestListener的对象。
*/
公共测试(最终上下文,最终TestListener回调){
超级(上下文);
//Debug.v(LOG_标记,“调用构造函数”);
this.callback=回调;
}
@凌驾
受保护的TestData doInBackground(最终测试数据…args){
TestData TestData=args[0];
如果(!isTestPossible()){
TestData.setTestState(TestState.FAILED\u TO\u RUN);
}否则{
setLocalIpAddress(Utils.getLocalIpAddress());
试一试{
setTestState(TestState.RUNNING);
运行测试(TestData);
setTestState(TestState.FINISHED);
}捕获(例外e){
Debug.e(LOG_标记,“doInBackground():runTest()异常:”+e);
TestData.setTestState(TestState.FAILED\u TO\u RUN);
}
}
返回测试数据;
}
@凌驾
受保护的void onPostExecute(TestData结果){
if(回调==null){
Debug.e(LOG_标记,“onPostExecute():侦听器回调为null!!”;
}否则{
Debug.v(LOG_标记,“onPostExecute()调用了.Results:+Results.toString());
callback.onTestComplete(结果);
callback=null;//释放对侦听器的引用
}
}
@凌驾
取消时受保护的void(测试数据结果){
if(回调==null){
e(LOG_标记,“onCancelled(results):侦听器回调为null!!”;
}否则{
callback.onTestCancelled(结果);
callback=null;//释放对侦听器的引用
}
}
//较旧的操作系统也需要此版本。
@凌驾
受保护的void onCancelled(){
if(回调==null){
e(LOG_标记,“onCancelled():侦听器回调为null!!”;
}否则{
v(LOG_标记,“onCancelled()调用”);
callback.onTestCancelled(空);
callback=null;//释放对侦听器的引用
}
}
//C++函数。
//此函数运行实际测试。
私有本机void runTest(TestData TestData);
}
//抽象测试
公共类AbstractTest扩展了异步任务{
受保护的电话管理员teleMan;
保护连接管理器connMan;
私有上下文测试上下文;
公共抽象测试(最终上下文){
teleMan=(TelephonyManager)context.getSystemService(context.TELEPHONY_服务);
connMan=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务);
testContext=context;
}
受保护的布尔值isTestPossible(){
如果(!Utils.isNetworkAvailable(testContext))
{
返回false;
}
字符串localIpAddress=Utils.getLocalIpAddress();
如果(localIpAddress==null | | localIpAddress==“”){
Debug.w(LOG_标记,“isTestPossible():无本地IP地址!!”;
返回false;
}
返回true;
}
@凌驾
受保护的T3后台(T1…参数){
返回null;
}
}
在onCreate()中的应用程序类中编写此代码
显示相关代码请查看嵌入式支持库?是否添加了任何外部jar文件?请检查:@SiddharthVyas是的,已添加外部jar文件。应用程序以前工作正常,在清除应用程序数据时工作正常。
try {
Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
// ignored
}