Использование Simple XML и получение NoClassDefFoundError в Android - PullRequest
14 голосов
/ 29 августа 2011

Я пытаюсь использовать Простой XML для преобразования моих Java-объектов в формат XML в моем приложении Android.

Я получаю NoClassDefFoundError в строке

Serializer serializer = new Persister();

java.lang.NoClassDefFoundError: org.simpleframework.xml.core.Persister

У меня есть simple-xml-2.6.1.jar в пути к классу проекта и когда я получил NoClassDefFoundError Я также положил эти 3 банки в classpath

stax-1.2.0.jar

stax-api-1.0.1.jar

xpp3-1.1.3_8.jar

, но не использовал.

Все еще с NoClassDefFoundError.

Любая помощь будет оценена. Спасибовы.

Ответы [ 6 ]

21 голосов
/ 22 марта 2012

У вас есть простой XML, отмеченный как " Заказ и экспорт " в конфигурации пути сборки?Я только что столкнулся с этой проблемой после обновления до новейших плагинов SDK и Eclipse для Android , успешно использующих Simple в течение нескольких месяцев.

Почему-то после обновления у меня былопойти и:

  • Проверить simple-xml-2.6.2.jar в разделе " Заказ и экспорт "
  • Очистить мой проект ( важно )

После этих двух шагов проблема исчезла.

6 голосов
/ 26 марта 2012

Я решил ту же проблему, что и вы, изменив путь сборки Java.

Я установил Android DDMS 17.0.0.v201203161636-291853 сегодня и NoClassDefFoundError появилось.

Как исправить -> Установите флажок для зависимости simple-xml и дайте ему более высокий приоритет, чем yourproject/src/main/java

enter image description here

2 голосов
/ 29 августа 2011

Вам не нужны эти три другие банки в вашем классе.

Убедитесь, что ваш classpath выглядит следующим образом, и что вы положили файл jar в папку lib (для удобства):

project build path

Добавить библиотеку в путь сборки

add to build path

0 голосов
/ 18 января 2014

Это немного странно, но это работает для меня.

Serializer serializer;        
Persister persiter = new Persister();
serializer = persiter;   
0 голосов
/ 29 августа 2011

при развертывании вашего приложения на устройстве (или в эмуляторе) вы получаете какие-либо ошибки о банке, которую вы пытаетесь включить?Не все банки будут работать на Android.Более старый код может представлять проблему. Возможно, вам потребуется получить исходный код и перекомпилировать интересующий вас JAR-файл. Это гарантирует, что байт-код совместим с Android.Я получил эту ошибку раньше с некоторыми банками, которые сказали, что они работали для меня даже с ошибками.Они также были связаны с XML (не SimpleXML).

0 голосов
/ 29 августа 2011

вы получили эту ошибку, потому что, возможно, вы не указали ни одной вашей активности в файле манифеста Поэтому, пожалуйста, добавьте его в свой файл манифеста, как показано ниже:

 <activity android:name=".DatabaseActivity"></activity>

здесь DatabaseActivity - это моя активность приложения. попробуй.

...