Zilong Wang
Zilong Wang

Reputation: 584

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/params/BasicHttpParams;

I have Upgraded the Android application from 26 to 28 SDK.

It works well in 23 - 27 version.

But the new version will crash in SDK 28.

this is the exception stack:

java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:354)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at 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)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/params/BasicHttpParams;
    at com.deepnet.andmob5.util.UtilsYang.getNewHttpClient(UtilsYang.java:163)
    at com.deepnet.andmob5.util.UtilsYang.makeRequest(UtilsYang.java:103)
    at com.deepnet.andmob5.util.UtilsYang.sendHTTPPost(UtilsYang.java:426)
    at com.deepnet.andmob5.threads.MyAsyncTask.doInBackground(MyAsyncTask.java:52)
    at com.deepnet.andmob5.threads.MyAsyncTask.doInBackground(MyAsyncTask.java:22)
    at android.os.AsyncTask$2.call(AsyncTask.java:333)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at 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) 
    at java.lang.Thread.run(Thread.java:764) 
 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.params.BasicHttpParams" on path: DexPathList[[zip file "/data/app/com.deepnet.andmob5-lZYwyb5I5Tn71C5uAAbAOA==/base.apk"],nativeLibraryDirectories=[/data/app/com.deepnet.andmob5-lZYwyb5I5Tn71C5uAAbAOA==/lib/x86, /data/app/com.deepnet.andmob5-lZYwyb5I5Tn71C5uAAbAOA==/base.apk!/lib/x86, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)

Please help me.

Upvotes: 7

Views: 5644

Answers (2)

MJB22
MJB22

Reputation: 368

You can add the following line in your module's build.gradle:

useLibrary 'org.apache.http.legacy'

And don't forget to upgrade the minSdkVersion to 23 as it's indicated in the following link:

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

Upvotes: 0

Prayag Gediya
Prayag Gediya

Reputation: 1118

If you are using the Apache HTTP client, add the following in AndroidManifest.xml: refer this

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

Upvotes: 14

Related Questions