Использование Simple XML и получение NoClassDefFoundError в Android

Я пытаюсь использовать Simple 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 баночки в путь к классам

stax-1.2.0.jar

stax-api-1.0.1.jar

xpp3-1.1.3_8.jar

но не используется.

По-прежнему имеет NoClassDefFoundError.

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

Ответы

Ответ 1

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

По какой-то причине после обновления мне пришлось пойти и:

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

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

Ответ 2

Я решил такую ​​же проблему, как ваш, изменяя путь сборки Java.

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

Как исправить флажок → Проверить флажок simple-xml и присвоить ему более высокий приоритет, чем yourproject/src/main/java

enter image description here

Ответ 3

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

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

project build path

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

add to build path

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Serializer serializer;        
Persister persiter = new Persister();
serializer = persiter;