0

I am trying to get data from YouTube api but when I create the httpclient object with asyctask I get a NoClassDefFoundError error. Why does this error occur?

    import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubeStandalonePlayer;

import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class MainActivity extends YouTubeBaseActivity {

    private static final String TAG="MainActivity";

    private static String urll="https://www.googleapis.com/youtube/v3/" +
            "videos?part=snippet%2CcontentDetails%2Cstatistics&id=Ks-_Mh1QhMc&key="+YouTubeConfig.getApiKey()+" HTTP/1.1";

    YouTubePlayerView player;
    YouTubePlayer.OnInitializedListener playerInitializer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList<String> a= new ArrayList<>();
        for (int x =0; x<100;x++ ){
            a.add(String.valueOf(x));
        }

        ListView lv= findViewById(R.id.izlenecekVideolar);
        ArrayAdapter<String> veriAdaptoru=new ArrayAdapter<String>
                (this, android.R.layout.simple_list_item_1, android.R.id.text1, a);
        lv.setAdapter(veriAdaptoru);
        player = (YouTubePlayerView) findViewById(R.id.youtubeView);
        int d = Log.d(TAG, "onCreate: ");


        new GetYoutube().execute();
        player.initialize(YouTubeConfig.getApiKey(),new YouTubePlayer.OnInitializedListener() {

                    @Override
                    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                        List<String> izle=new ArrayList<>();
                        izle.add("W4hTJybfU7s");
                        izle.add("co1T0ue8zD8");
                        youTubePlayer.loadVideos(izle);
                        Log.d(TAG, "onInitializationSuccess: ");
                        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
                    }

                    @Override
                    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
                        Log.d(TAG, "onInitializationFailure: ");
                    }
                }
        );

        Log.d(TAG, "onCreate:initialized ");
    }

    private static class GetYoutube extends AsyncTask<Void,String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(Void... voids) {
            HttpClient hc=new DefaultHttpClient();
            HttpGet hget=new HttpGet(urll);
            try {
                HttpResponse response =hc.execute(hget);
                HttpEntity he= response.getEntity();
                String json= EntityUtils.toString(he);
                return json;


            }
            catch (Exception e){
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            if (s != null)
            {
                try {
                    JSONObject jse=new JSONObject(s);
                    Log.e("response",jse.toString());
                }
                catch (Exception e){

                    e.printStackTrace();
                }

            }

        }
    }
}

LOGCAT

2019-07-27 01:49:22.162 21763-21763/com.gamedu.yourchild E/AndroidRuntime: FATAL EXCEPTION: main Process: com.gamedu.yourchild, PID: 21763 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory; at org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:182) at org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:150) at com.gamedu.yourchild.MainActivity.onCreate(MainActivity.java:68) at android.app.Activity.performCreate(Activity.java:7698) at android.app.Activity.performCreate(Activity.java:7687) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:81) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1935) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7116) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925) Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.LogFactory" on path: DexPathList[[zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/base.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_resources_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_2_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_3_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_4_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_5_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_6_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_7_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_8_apk.apk", zip file "/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/lib/x86, /system/lib, /system/product/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:182)  at org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:150)  at com.gamedu.yourchild.MainActivity.onCreate(MainActivity.java:68)  at android.app.Activity.performCreate(Activity.java:7698)  at android.app.Activity.performCreate(Activity.java:7687)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:81)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1935)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:214)  at android.app.ActivityThread.main(ActivityThread.java:7116)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)  Suppressed: java.io.IOException: No original dex files found for dex location /data/app/com.gamedu.yourchild-Cf8th6YAffTJoMT1j3NJUg==/split_lib_resources_apk.apk at dalvik.system.DexFile.openDexFileNative(Native Method) at dalvik.system.DexFile.openDexFile(DexFile.java:365) at dalvik.system.DexFile.(DexFile.java:107) at dalvik.system.DexFile.(DexFile.java:80) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:444) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:403) at dalvik.system.DexPathList.(DexPathList.java:164) at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:126) at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:101) at dalvik.system.PathClassLoader.(PathClassLoader.java:74) 2019-07-27 01:49:22.163 21763-21763/com.gamedu.yourchild E/AndroidRuntime: at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:87) at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:116) at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:114) at android.app.ApplicationLoaders.getClassLoaderWithSharedLibraries(ApplicationLoaders.java:60) at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:861) at android.app.LoadedApk.getClassLoader(LoadedApk.java:958) at android.app.LoadedApk.getResources(LoadedApk.java:1196) at android.app.ContextImpl.createAppContext(ContextImpl.java:2462) at android.app.ContextImpl.createAppContext(ContextImpl.java:2454) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6105) at android.app.ActivityThread.access$1100(ActivityThread.java:211) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1778)

Kuya
  • 7,280
  • 4
  • 19
  • 31
  • Please try the solution give by user [Farhan Khan](https://stackoverflow.com/a/57227983/4092887) or, *if you haven't tried yet*, please search on internet about `Java.lang.NoClassDefFoundError android` on Google or check [these](https://stackoverflow.com/a/27709640/4092887) [answers](https://stackoverflow.com/a/16641790/4092887). – Mauricio Arias Olave Jul 28 '19 at 14:30

1 Answers1

0

First of All, this kind of errors are generally not coding errors rather because of some corrupted files in the base APK which can be clearly seen from the logcat. See the ClassLoader is unable to load a specific class from the base apk file, so the FATAL Exception ClassNotFound occurs.

Solution: Basically, it is not a confirmed solution but worth a try, I have faced similar problems and after searching quite a bit, only reasonable solution that I found is to remove all data and Uninstall the App from device and re-installing it. Though, it is not a confirmed solution.

Farhan Ibn Wahid
  • 926
  • 1
  • 9
  • 22