2015-11-26 3 views
0

Так что я пытаюсь сериализовать простой объект в XML-файл, используя библиотеку XStream.XStream не может десериализовать XML из-за NoClassDefFoundError

Они приводят к следующему исключению: жалоба на класс Person не найден. Я попытался добавить аннотации XStream к классу Person, но это тоже не имело успеха.

Что такое правильный способ (де) сериализации объектов с использованием библиотеки XStream для

Exception in thread "main" java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException 
    at com.thoughtworks.xstream.XStream.<init>(XStream.java:350) 
    at XMLTest.main(XMLTest.java:10) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

Для полноты я добавляю мой код ниже.

import com.thoughtworks.xstream.XStream; 

public class XMLTest { 

    public static void main(String[] args) { 

     Person john = new Person("John", "Doe", 1234); 

     XStream xstream = new XStream(); 
     String xml = xstream.toXML(john); 

     Person newJohn = (Person) xstream.fromXML(xml); 

     System.out.println("Hi " + newJohn.getFirstname()); 
    } 
} 

и

public class Person { 
    private String firstname; 
    private String lastname; 
    private int age; 

    public Person(String firstname, String lastname, int age) { 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.age = age; 
    } 

    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 
} 
+0

Я думаю, что этот пост http://stackoverflow.com/questions/21664249/xstream-xmlpullparserexception имеет ответьте на ваш вопрос. –

ответ

0

Использование

XStream xstream = new XStream(new StaxDriver()); 

вместо этого.

Объяснение в том, что если вы

XStream xstream = new XStream(new StaxDriver()); 

тогда вам требуется xstream- [версия] .jar, xpp3- [версия] .jar и xmlpull- [версия] .jar в пути к классам.», Но XStream xstream = new XStream(new StaxDriver()); не требует библиотеки XPP3 начиная с Java 6

очень простое объяснение, и больше информации можно получить в repo-source

+0

Спасибо за ответ, это действительно решает мою проблему. Не могли бы вы открыть немного больше об этом решении, чтобы я мог принять это как достойный ответ? – Wouter

Смежные вопросы