XStream XmlPullParserException

时间:2014-02-09 19:59:57

标签: java xstream

我正在尝试使用XStream。我已将XStream可执行Jar文件添加到我的项目中。 执行以下命令:

    XStream xstream = new XStream();

导致以下异常:

线程“main”中的异常java.lang.NoClassDefFoundError:org / xmlpull / v1 / XmlPullParserException

at com.thoughtworks.xstream.XStream.<init>(XStream.java:350)
at xstream_test.XmlTrasformer.objectToXml(XmlTrasformer.java:56)
at xstream_test.XmlTrasformer.main(XmlTrasformer.java:31)

引起:java.lang.ClassNotFoundException:org.xmlpull.v1.XmlPullParserException

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more

任何想法我可能做错了? 感谢。

4 个答案:

答案 0 :(得分:16)

确保您已经包含了XStream附带的所有jar,特别是“kxml2.jar”和“xmlpull-1.1.3.1.jar”文件。罐子版本可能会降低你的版本。

答案 1 :(得分:10)

使用

new XStream(new StaxDriver())

xpp和xmlpull是非常古老的代码库

使用非默认构造函数

可以避免使用那些2个罐子

答案 2 :(得分:1)

您也可以使用:

new XSteam(new DomDriver())

与StaxDriver的不同之处在于convert objet到xml的输出。

输出DomDriver:

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>

输出StaxDriver:

<?xml version="1.0" ?><person><firstname>Joe</firstname><lastname>Walnes</lastname><phone><code>123</code><number>1234-456</number></phone><fax><code>123</code><number>9999-999</number></fax></person>

答案 3 :(得分:0)

不确定这现在是否可以帮助某人。

我对 Jmeter maven 插件做了个噩梦,遇到了同样的问题,我发现下面的依赖解决了这个问题。

    <dependency>
        <groupId>xmlpull</groupId>
        <artifactId>xmlpull</artifactId>
        <version>1.1.3.1</version> <--- or whatever
    </dependency>

可能这在一行中包含了所有必需的内容。

不知道为什么 maven jmeter 插件没有附带所有必需的依赖项。