NoClassDefFoundError: 未能解析: Lorg/apache/commons/logging/LogFactory

huangapple 未分类评论42阅读模式
标题翻译

NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory

问题

错误:

E/AndroidRuntime: 致命异常:AsyncTask#1
    进程:com.azail.cart.debug,PID:2403
    java.lang.RuntimeException:执行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: 无法解析:Lorg/apache/commons/logging/LogFactory;
        at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:159)
        at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:178)
        at com.azail.cart.connections.ConnectionClass.getRequest(ConnectionClass.java:240)
        at com.azail.cart.connections.AppCacheConnections.getAllDetailsOfApp(AppCacheConnections.java:33)
        at com.azail.cart.SplashActivity$1.doInBackground(SplashActivity.java:159)
        at com.azail.cart.SplashActivity$1.doInBackground(SplashActivity.java:146)
        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: 在路径上找不到类“org.apache.commons.logging.LogFactory”:DexPathList[[zip文件“/data/app/com.azail.cart.debug-a_b6vv5iBpFhYtgRldECJg== /base.apk”],nativeLibraryDirectories = [/data/app/com.azail.cart.debug-a_b6vv5iBpFhYtgRldECJg==/lib/arm64,/system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:159)
        at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:178)
        at com.azail.cart.connections.ConnectionClass.getRequest(ConnectionClass.java:240)
  • 情况:
    我进行了调试,并发现我在第一个 API 调用中使用了以下代码:

     HttpClient httpclient = new DefaultHttpClient();
    
    接下来会进入 AsyncTask,以下是 AsyncTask 的构造函数的代码:
        public AsyncTask(@Nullable Looper callbackLooper) { 的 catch 块
    并显示上述错误。
    
    但是,当我在其他 Android SDK 版本低于28(例如27)的设备上尝试时,一切正常,没有错误发生。
    
    预先感谢您的帮助。
    
英文翻译

Error:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: com.azail.cart.debug, PID: 2403
    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/commons/logging/LogFactory;
        at org.apache.http.impl.client.AbstractHttpClient.&lt;init&gt;(AbstractHttpClient.java:159)
        at org.apache.http.impl.client.DefaultHttpClient.&lt;init&gt;(DefaultHttpClient.java:178)
        at com.azail.cart.connections.ConnectionClass.getRequest(ConnectionClass.java:240)
        at com.azail.cart.connections.AppCacheConnections.getAllDetailsOfApp(AppCacheConnections.java:33)
        at com.azail.cart.SplashActivity$1.doInBackground(SplashActivity.java:159)
        at com.azail.cart.SplashActivity$1.doInBackground(SplashActivity.java:146)
        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)&#160;
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)&#160;
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)&#160;
        at java.lang.Thread.run(Thread.java:764)&#160;
     Caused by: java.lang.ClassNotFoundException: Didn&#39;t find class &quot;org.apache.commons.logging.LogFactory&quot; on path: DexPathList[[zip file &quot;/data/app/com.azail.cart.debug-a_b6vv5iBpFhYtgRldECJg==/base.apk&quot;],nativeLibraryDirectories=[/data/app/com.azail.cart.debug-a_b6vv5iBpFhYtgRldECJg==/lib/arm64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.apache.http.impl.client.AbstractHttpClient.&lt;init&gt;(AbstractHttpClient.java:159)&#160;
        at org.apache.http.impl.client.DefaultHttpClient.&lt;init&gt;(DefaultHttpClient.java:178)&#160;
        at com.azail.cart.connections.ConnectionClass.getRequest(ConnectionClass.java:240)&#160;
  • Situation :
    So I debugged and found that the first api call im doing in which using

     HttpClient httpclient = new DefaultHttpClient();
    
    the next step its going to AsyncTask 
        public AsyncTask(@Nullable Looper callbackLooper) { &#39;s catch block
    and displaying above error
    
    but when i tried on other device with android sdk version less than 28 i.e 27 its working fine with no errors
    
    In advance Thanks for helping
    

答案1

得分: 0

你需要在清单文件中添加以下内容:

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

You have to add these lines in your manifest file

&lt;uses-library android:name =&quot;org.apache.http.legacy&quot; android:required =&quot;false&quot;/&gt;

huangapple
  • 本文由 发表于 2020年3月16日 20:09:45
  • 转载请务必保留本文链接:https://java.coder-hub.com/60705753.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定