【问题标题】:NoClassDefFoundError exception in android stuidioandroid studio中的NoClassDefFoundError异常
【发布时间】:2019-01-06 12:59:29
【问题描述】:

原因:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/http/impl/client/DefaultHttpClient

我无法解决以下错误:

原因:java.lang.NoClassDefFoundError:解析失败: Lorg/apache/http/impl/client/DefaultHttpClient; 在 com.medicend.jykra.medicend.Async.Parser.LoginParser.hitWS(LoginParser.java:68) 在 com.medicend.jykra.medicend.Async.Parser.LoginParser.postData(LoginParser.java:50) 在 com.medicend.jykra.medicend.Activity.SignInActivity$LoginAsync.doInBackground(SignInActivity.java:91) 在 com.medicend.jykra.medicend.Activity.SignInActivity$LoginAsync.doInBackground(SignInActivity.java:73) 在 android.os.AsyncTask$2.call(AsyncTask.java:333) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 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.ClassNotFoundException:在路径上找不到类“org.apache.http.impl.client.DefaultHttpClient”: DexPathList[[压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/base.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_dependencies_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_resources_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_0_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_1_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_2_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_3_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_4_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_5_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_6_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_7_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_8_apk.apk", 压缩文件 "/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/lib/x86, /系统/库]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 com.medicend.jykra.medicend.Async.Parser.LoginParser.hitWS(LoginParser.java:68) 在 com.medicend.jykra.medicend.Async.Parser.LoginParser.postData(LoginParser.java:50) 在 com.medicend.jykra.medicend.Activity.SignInActivity$LoginAsync.doInBackground(SignInActivity.java:91) 在 com.medicend.jykra.medicend.Activity.SignInActivity$LoginAsync.doInBackground(SignInActivity.java:73) 在 android.os.AsyncTask$2.call(AsyncTask.java:333) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 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.io.IOException:没有找到 dex 位置的原始 dex 文件 /data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_resources_apk.apk 在 dalvik.system.DexFile.openDexFileNative(本机方法) 在 dalvik.system.DexFile.openDexFile(DexFile.java:354) 在 dalvik.system.DexFile.(DexFile.java:101) 在 dalvik.system.DexFile.(DexFile.java:75) 在 dalvik.system.DexPathList.loadDexFile(DexPathList.java:394) 在 dalvik.system.DexPathList.makeDexElements(DexPathList.java:354) 在 dalvik.system.DexPathList.(DexPathList.java:164) 在 dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:74) 在 dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:65) 在 dalvik.system.PathClassLoader.(PathClassLoader.java:64) 在 com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73) E/Android运行时:在 com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88) 在 android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74) 在 android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40) 在 android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727) 在 android.app.LoadedApk.getClassLoader(LoadedApk.java:810) 在 android.app.LoadedApk.getResources(LoadedApk.java:1032) 在 android.app.ContextImpl.createAppContext(ContextImpl.java:2345) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5749) 在 android.app.ActivityThread.access$1100(ActivityThread.java:199) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

【问题讨论】:

标签: android android-studio noclassdeffounderror classnotfoundexception


【解决方案1】:

将以下内容添加到“应用程序”下的清单文件中:

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

https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p

【讨论】:

  • 注意:'required' 属性要求最低 SDK 版本 7。
【解决方案2】:

您收到此错误是因为您的应用使用旧版 org.apache.http.legacy 客户端,并且您的应用的 targetSdkVersion 设置为 28 或更高版本。

考虑使用HttpURLConnection 或在build.gradle 中降低targetSdkVersion。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多