首页 > 解决方案 > 生产 Android 应用程序显示原因:java.lang.NoClassDefFoundError 错误

问题描述

生产应用程序如何向用户显示类未找到错误,但在模拟器上它在 Android 9.0 上运行良好。模拟器不应该在编译或构建期间也中断或显示错误吗?

java.lang.RuntimeException:

在 android.os.AsyncTask$3.done (AsyncTask.java:354) 在 java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383) 在 java.util.concurrent.FutureTask.setException (FutureTask.java:252)在 java.util.concurrent.FutureTask.run (FutureTask.java:271) 在 android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245) 在 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java: 1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) 在 java.lang.Thread.run (Thread.java:764)

引起:java.lang.NoClassDefFoundError:

在 org.apache.http.impl.client.AbstractHttpClient。(AbstractHttpClient.java:182)在 org.apache.http.impl.client.DefaultHttpClient。(DefaultHttpClient.java:150) 在 com.exposure.utilities.RestClient.executeRequest (RestClient.java:162) 在 com.exposure.utilities.RestClient.Execute (RestClient.java:127)
在 com.exposure.utilities.Utility。 getData (Utility.java:162) 在 com.exposure.utilities.DataTask.doInBackground (DataTask.java:26) 在 com.exposure.utilities.DataTask.doInBackground (DataTask.java:9) 在 android.os.AsyncTask$2。在 java.util.concurrent.FutureTask.run (FutureTask.java:266) 调用 (AsyncTask.java:333)

引起:java.lang.ClassNotFoundException:

在 dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134) 在 java.lang.ClassLoader.loadClass (ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass (ClassLoader.java:312)

标签: javaandroidandroid-studiogoogle-play

解决方案


看起来这是由于不推荐使用 http 客户端。将以下代码添加到您的清单应用程序标签。

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

使用 android pie 他们已弃用从 andorid pie 开始对 Apache HTTP 客户端的支持,请查看更改日志以获取参考https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p


推荐阅读