I want to parse an html page in my listview in my app android, I'm developing for android. I would like this app to parse an html page, but when I start the application it crashes! And I got by logcat this error:
09-05 20:59:29.734      983-999/com.app.myapplication E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
        java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:299)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
        at java.util.concurrent.FutureTask.run(FutureTask.java:239)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at java.lang.Thread.run(Thread.java:856)
        Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
        at com.app.myapplication.MainActivity$ParsingPaginaWeb.doInBackground(MainActivity.java:84)
        at com.app.myapplication.MainActivity$ParsingPaginaWeb.doInBackground(MainActivity.java:39)
        at android.os.AsyncTask$2.call(AsyncTask.java:287)
        at java.util.concurrent.FutureTask.run(FutureTask.java:234)
This is the code Java AsyncTask:
private class ParsingPaginaWeb extends AsyncTask<String,String,String> {
        ArrayList<String> titoli; //lista dei titoli
        ArrayList<String> descrizioni; //lista delle descrizioni
        @Override
        protected void onPreExecute()
        {
            //prima di eseguire il parsing inizializzo gli arraylist
            titoli = new ArrayList<String>();
            descrizioni = new ArrayList<String>();
        }
        @Override
        protected String doInBackground(String... params) {
            /*
             * Qui si effettua il parsing. Come esempio prendiamo il sito di anddev.it
             * Questo, lo ripeto, � solo un esempio, in quanto il parsing cambia 
             * completamente in base al sito da cui prendere i dati.
             * 
             * 
             * In questo caso vogliamo prendere dalla home di anddev.it i titoli
             * delle varie sezioni del forum e la relativa descrizione.
             * Quindi analizzando un po il codice html notiamo che:
             * 
             * 1- La home � organizzata in tabella con classe "table_list"
             * 
             * 2- All'interno c'� una alternanza di tbody con classe header e content. 
             *    A noi interessano quelli con classe content 
             *   
             * 3- All'interno di ogni tbody con classe "content" ci interessa ogni riga con 
             *    classe "windowbg2", che contengono i dati da recuperare
             * 
             * 4- All'interno di ogni riga ci interessa il testo contenuto nel tag <a> con 
             *    classe "subject" che contiene il titolo e quello nel tag <p> 
             *    che contiene la descrizione. 
             *    
             * Adesso abbiamo tutte le informazioni che ci servono per fare il parsing
             */
            try {
                // NB: controllate di importare le classi giuste
                // all'inizio ci deve essere org.jsoup
                // ricavo l'html della pagina con user agent desktop (Chrome) 
                // e timeout 30000
                Document doc = Jsoup.connect("http://mega-search.me/search?k=")
                        .userAgent("Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22")
                        .timeout(30000).get();
                // prendo la tabella 
                // (con .first() ottengo il primo elemento, in questo caso l'unico )
                Elements links = doc.select(".link");
                for( Element link: links )
                {
                    String href = link.attr("href");
                    Elements titles = link.select( ".title" );
                    String title = ( links.size() > 0 ) ? links.get( 0 ).toString() : "";
                    titoli.add(title);
                    descrizioni.add(href);
                }
                        // inserisco nei rispettivi arraylist
            } catch (Exception e) {
                // gestione dell'eccezione
                // ad esempio mostrare messaggio di errore o altro (qui nel logcat)
                Log.e("ESEMPIO", "ERRORE NEL PARSING");
            }
            return null;
        }
        @Override
        protected void onPostExecute(String result)
        {
            // dopo che ho eseguito il parsing mostro i dati nella listview
            // usando il custom array adpater ParsingArrayAdapter
            ParsingArrayAdapter adapter = new ParsingArrayAdapter(MainActivity.this, titoli, descrizioni);
            lista.setAdapter(adapter);
        }
    }