【发布时间】:2015-11-26 15:15:29
【问题描述】:
所以我正在尝试使用 XStream 库将一个简单的对象序列化为 XML 文件。
这些导致以下异常,抱怨找不到类 Person。我尝试向 Person 类添加 XStream 注释,但这也没有成功。
使用 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;
}
}
【问题讨论】:
-
我认为stackoverflow.com/questions/21664249/…这个帖子已经回答了你的问题。