首页 文章

android stuidio中的NoClassDefFoundError异常

提问于
浏览
-3

引起: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)at com.medicend.jykra.medicend.Async.Parser.LoginParser.postData(LoginParser.java:50)at com.medicend .jykra.medicend.Activity.SignInActivity $ LoginAsync.doInBackground(SignInActivity.java:91)at com.medicend.jykra.medicend.Activity.SignInActivity $ LoginAsync.doInBackground(SignInActivity.java:73)at android.os.AsyncTask $ 2 . 在java.util.concurrent的android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:245)的java.util.concurrent.FutureTask.run(FutureTask.java:266)调用(AsyncTask.java:333) . ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:641)at java.lang.Thread.run(Thread.java:764)引起:java.lang .ClassNotFoundException:在路径上找不到类“org.apache.http.impl.client.DefaultHttpClient”:DexPathList [[zip file“/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/base.apk “,zip文件”/ data / app / c om.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ == / split_lib_dependencies_apk.apk“,zip文件”/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_resources_apk.apk“,zip文件”/ data / app / com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ == / split_lib_slice_0_apk.apk“,zip文件”/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_1_apk.apk“,zip文件”/ data / app / com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ == / split_lib_slice_2_apk.apk“,zip文件”/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_3_apk.apk“,zip文件”/ data / app / com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ == / split_lib_slice_4_apk.apk“,zip file”/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_5_apk.apk“,zip file”/ data / app / com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ == / split_lib_slice_6_apk.apk“,zip file”/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_7_apk.apk“,zip文件“/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_8_apk.apk”,zip文件“/data/app/com.medicend.jykra.medicend-IiBcrMY7QQm4ixa9RIMICQ==/split_lib_slice_9_apk.apk”], nativeLibraryDirectories = [/ data / app / com.medicend.jykra.medicend -IiBcrMY7QQm4ixa9RIMICQ == / lib / x86,/ system / lib]],位于java.lang的dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) . Class.Loader.loadClass(ClassLoader.java:379)位于com.medicend.jykra.medicend.Async.Parser.LoginParser.hitWS(LoginParser.java:68)的java.lang.ClassLoader.loadClass(ClassLoader.java:312) .medicend.jykra.medicend.Async.Parser.LoginParser.postData(LoginParser.java:50)at com.medicend.jykra.medicend.Activity.SignInActivity $ LoginAsync.doInBackground(SignInActivity.java:91)at com.medicend.jykra .medicend.Activity.SignInActivity $ LoginAsync.doInBackground(SignInActivity.java:73)at android.os.AsyncTask $ 2.call(AsyncTask.java:333)at java.util.concurrent.FutureTask.run(FutureTask.java:266)在android . os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:245)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)at 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 .dk在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)at dalvik.system.BaseDexClassLoader . (BaseDexClassLoader.java:65)at dalvik.system.PathClassLoader . (PathClassLoader.java:64)在com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)E / AndroidRuntime:在android.app.ApplicationLoaders.getClassLoader的com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88) (ApplicationLoaders.java:74)在Android.app.LoadedApk.getCoLadader(LoadedApk.java)的android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727)的android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40) 810)在android.app.LoadedApk.getResources(LoadedApk.java:1032)的android.app.ContextImpl.createAppContext(ContextImpl.java:2345)atandroid.app.ActivityThread.handleBindApplication(ActivityThread.java:5749)在android.app.ActivityThread.access $ 1100(ActivityThread.java:199)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1650)在android . android.app.Looper.loop(Looper.java:193)的os.Handler.dispatchMessage(Handler.java:106)位于android.app.ActivityThread.main(ActivityThread.java:6669)的java.lang.reflect.Method com.android.internal.os.ZygoteInit.main中的com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)中的.invoke(Native Method)(ZygoteInit.java:858)

2 回答

  • 0

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

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

  • 3

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

    <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

相关问题