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

Я работаю с eclipse Версия: Indigo Service Release 2 Build id: 20120216-1857. Версия Android ist 2.2. Я делаю приложение для проверки подключения и анализа веб-сайта следующим образом:

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) { } } } 

Файл манифеста:

 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> 

Я добавляю библиотеку jsoup-1.6.1.jar в JAVA Buildpath, но я становлюсь ошибкой во время выполнения: E / AndroidRuntime (736): java.lang.NoClassDefFoundError: org.jsoup.Jsoup

Как я могу устранить эту ошибку?

Я столкнулся с этой точной проблемой после недавнего обновления компонента ADT для Android. Похоже, что Android игнорирует путь сборки и вместо этого использует значения ANT по умолчанию.

Я решил это, удалив свой файл jar из пути сборки, создав папку в «корне» из иерархии приложения (вместе с src, gen и т. Д.), Называемую «libs», и разместив там свой .jar. При очистке / сборке и повторном запуске приложения ошибка должна исчезнуть.

FYI – это происходит из-за того, что файл JAR не упаковывается в файлы .apk – вот почему он строит правильно, но недоступен во время выполнения на вашем Android-устройстве.

См. NoClassDefFoundError – Eclipse и Android

Там также проблема, что банки должны быть в каталоге libs (с «s»), а не в lib … может ли это быть вашей проблемой?

Вам не нужна строка:

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

В вашем файле манифеста. Все, что вам нужно сделать, чтобы использовать Jsoup, это убедиться, что это часть вашего пути сборки, выполнив следующие действия:

  • Щелкните правой кнопкой мыши на своем проекте и выберите « Свойства»
  • Выберите Java Build Path и выберите Add External JARs …
  • Перейдите к файлу jsoup jar

Затем Jsoup будет действовать как любая другая библиотека в java. Например, в моем приложении я использую его так:

  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(); } 

Примечание. Я не включил весь мой код, потому что он довольно длинный. В любом случае, после этого вы просто импортируете классы по мере необходимости, например, в шахте я использую следующее:

 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; 
  1. Щелкните правой кнопкой мыши по имени проекта> Свойства> вкладка «Путь сборки Java»> «Библиотеки» и нажмите кнопку «Добавить внешние банки».
  2. Выберите путь jar из вашего каталога, в который вы загрузили jsoup-1.7.3.jar.
  3. После добавления jar перейдите к следующей вкладке Order and export и установите флажок jsoup-1.7.3.jar. 4 щелкните ok 5.clean создайте свой проект, а затем запустите.

Я решил ту же проблему, выполнив следующие шаги

Я смог решить эту проблему, выполнив следующие действия:

  1. Размещение jsoup jar в папке 'libs' (как указано в ответе Джона)
  2. Удалите «Зависимости Android» и «Частные библиотеки Android» от пути сборки
  3. Использование инструментов Android> Исправить свойства проекта, чтобы повторно заполнить приведенные выше записи в пути сборки.

Ты делаешь это неправильно. Вы не можете использовать функции Jsoup в oncreate Activity. Вам нужно сделать либо задачу Async, либо поток.

Это делается для предотвращения выполнения задач блокировки в вашей деятельности.

Вот хороший блог, который объясняет, как это сделать, и также дайте пример кода.

Образец кода Нажмите здесь

Просто закройте Eclipse и откройте его снова. Проблема будет решена.

Мое решение было

  1. Щелкните правой кнопкой мыши по имени проекта> Свойства> вкладка «Путь сборки Java»> «Библиотеки»> удалите все, кроме «Android XX» (2.3.3 в моем случае) и «Android Dependencies» (согласно ссылке, найденной @KarlKarlsom > android.foxykeep .com < от проблемы стека> стек < )
  2. Я создал папки в моих основных проектах. Поскольку я использовал jsoup, поэтому я переместил его в эту папку
  3. Запущенное затмение, очистка проекта не сработала

Ps Я использовал jsoup и sherlock. Я не менял библиотеку sherlock, только мой главный проект.