Android java.lang.NoClassDefFoundError: org.jsoup.Jsoup

Trabajo con eclipse Versión: Indigo Service Release 2 Identificación de la compilación: 20120216-1857. La versión de Android ist 2.2. Hago una aplicación para probar una conexión y analizar un sitio web como este:

public class TestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { Document doc = Jsoup.connect("http://example.com/").get(); Elements divs = doc.select("div#test"); for (Element div : divs) { System.out.println(div.text()); } } catch (Exception e) { } } } 

Archivo de manifiesto:

 android:installLocation="preferExternal" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".TestActivity" android:label="@string/app_name" android:configChanges="orientation" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <uses-library android :name="org.jsoup.Jsoup" /> </activity> </application> 

Añado la biblioteca jsoup-1.6.1.jar a JAVA Buildpath, pero me convierto en el error de ejecución: E / AndroidRuntime (736): java.lang.NoClassDefFoundError: org.jsoup.Jsoup

¿Cómo puedo resolver este error?

Encontré este problema exacto después de una actualización reciente del componente ADT de Android. Parece que Android está ignorando la ruta de construcción y en lugar de usar los valores predeterminados de ANT.

He resuelto esto mediante la eliminación de mi archivo jar de la ruta de construcción, la creación de una carpeta en la "raíz" de la heirarchy aplicación (junto con src, gen, etc) llamado "libs", y poner mi. Cuando limpie / cree y vuelva a iniciar la aplicación, el error debe desaparecer.

FYI – esto ocurre porque el archivo JAR no se envía en los archivos .apk – por eso se basa correctamente, pero no está disponible durante el tiempo de ejecución en su dispositivo Android.

Ver NoClassDefFoundError – Eclipse y Android

También existe el problema de que los tarros tienen que estar en las librerías (con un 's') directorio y no lib …. podría ser su problema?

Usted no necesita la línea:

  <uses-library android:name = "org.jsoup.Jsoup"/> 

En su archivo de manifiesto. Todo lo que necesita hacer para usar Jsoup es asegurarse de que es parte de su ruta de construcción haciendo lo siguiente:

  • Haga clic derecho en su proyecto y seleccione Propiedades
  • Seleccione Java Build Path y seleccione Add External JARs …
  • Navegue hasta el archivo jar de Jsoup

Entonces, Jsoup actuará como cualquier otra biblioteca en java. Por ejemplo en mi aplicación lo uso así:

  try { Document doc = Jsoup.connect( myHtml ).get(); Elements table = doc.select( "table#ctl00_ContentPlaceHolder1_tblPasses" ); // Returns first row of the table which we want Elements row = table.select( "tr.lightrow" ); Element record_One = row.first(); } 

Nota – No he incluido todo mi código para él porque es bastante largo. De todos modos, después de eso sólo importar las clases según sea necesario, por ejemplo en la mía, uso lo siguiente:

 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; 
  1. Haga clic derecho en el nombre del proyecto> Propiedades> Java Build Path> ficha Libraries luego haga clic en el botón Agregar jarras externas.
  2. Seleccione la ruta del jar desde el directorio en el que había descargado jsoup-1.7.3.jar.
  3. Después de añadir jar, vaya a la siguiente pestaña Order y exporte y seleccione la casilla jsoup-1.7.3.jar 4 haga clic en ok 5.clean construya su proyecto y luego ejecute.

He resuelto el mismo problema siguiendo los pasos anteriores

Pude resolver este problema siguiendo lo siguiente:

  1. Colocar el jsoup jar en la carpeta 'libs' (como se indica en la respuesta de Juan)
  2. Elimine las "Dependencias de Android" y "Bibliotecas privadas de Android" del camino de construcción
  3. Uso de las herramientas de Android> Fijar propiedades del proyecto para repoblar las entradas anteriores en la ruta de construcción.

Lo estas haciendo mal. No puedes usar las funciones Jsoup en el proceso de Actividad. Debe hacer una tarea asíncrona o un subproceso.

Esto es para evitar hacer tareas de bloqueo en su actividad.

Aquí está un blog agradable que explica cómo hacerlo y proporciona código de ejemplo también.

Ejemplo de código Haga clic aquí

Sólo cierre el Eclipse y ábralo de nuevo. El problema se resolverá.

Mi solución fue

  1. Haga clic derecho en el nombre del proyecto> Propiedades> Java Build Path> ficha Bibliotecas> eliminar todo excepto el "Android XX" (2.3.3 en mi caso) y las "dependencias de Android" (según el enlace encontrado por @KarlKarlsom > android.foxykeep .com < desde el problema de la pila> stack < )
  2. Creé bibliotecas de carpetas en mis proyectos principales. Como estaba usando jsoup por lo que se trasladó a esta carpeta
  3. El eclipse reiniciado, el proyecto de limpieza no funcionó

Ps Yo estaba usando jsoup y sherlock. No cambié la biblioteca de sherlock, solo mi proyecto principal.

  • Problemas al pasar las cookies a la solicitud GET (después del POST)
  • ¿Cómo agrego archivos .jar en Android Studio
  • Jsoup obtiene elemento en value = ""
  • cómo resolver el error jsoup: no se puede encontrar una ruta de certificación válida a la dirección solicitada
  • RoboSpice y Jsoup
  • El uso de un HashMap para almacenar grandes cantidades de datos está ralentizando mi aplicación de Android, ¿hay otras opciones?
  • Usando jsoup con fuerza de cierre proguard cerrar
  • Cómo agregar niños a childnodes mediante el documento jsoup
  • Cierre de la conexión Jsoup
  • El análisis con jsoup lanza error (NetworkOnMainThreadException)
  • Cómo llamar a Javascript __doPostBack de JSOUP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.