Java:xmlpull 给我编译错误 (http://www.xmlpull.org/)

Posted

技术标签:

【中文标题】Java:xmlpull 给我编译错误 (http://www.xmlpull.org/)【英文标题】:Java: xmlpull giving me compile error (http://www.xmlpull.org/) 【发布时间】:2013-06-29 13:02:58 【问题描述】:

我正在学习 xml 解析,我想使用 xmlpull.org 的 api。

我从http://www.xmlpull.org/v1/download/ 下载了“xmlpull_1_0_5.jar”文件并将其包含在我的参考库中。

然后编写了以下代码(在 Eclipse 中):

import java.io.IOException;
import java.io.StringReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

public class Collections 
    public static void main (String args[])
            throws XmlPullParserException, IOException
        
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser xpp = factory.newPullParser();
            System.out.println("parser implementation class is "+xpp.getClass());


        


问题是当我编译时出现这个错误:

线程“主”org.xmlpull.v1.XmlPullParserException 中的异常:无法加载任何工厂类(即使是小型或完整的默认实现);嵌套异常是: org.kxml2.io.XmlReader 在 org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:225) 在 org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:76) 在 Collections.main(Collections.java:12)

怎么了,请帮忙?

【问题讨论】:

【参考方案1】:

首先,这不是编译器错误,因为它不会在编译时发生。这是一个运行时错误。

错误的原因是 xmlpull 只是一个 api - 它需要适当的 xml pull 解析器实现。

正如他们的主页所说,

如何使用它?

XMLPULL API 可免费使用。您可以将 XmlPull API 下载为 压缩包或 zip 文件。我们还提供对最新 API 的访问 通过匿名 CVS 的版本。

但是要使用 XMLPULL,您需要下载一个实现 XmlPull API。

请参阅http://www.xmlpull.org/impls.shtml#xmlpull 了解您可以下载的实现。

【讨论】:

什么是实现,我知道的唯一实现是接口实现? 我会试试KXML2,我能把jar文件作为参考库吗? sourceforge.net/projects/kxml/files/kxml2/kxml2-min-2.3.0.jar 是的,XmlPull 定义了一个接口,而 KXML2 等库实现了该接口。不过,它与编译时接口有点不同——它实际上是运行时委托。是的,您应该下载 KXML2 jar 文件,并在运行时将其添加到您的类路径中。 感谢您的帮助,但我仍然遇到相同的运行时错误。在此链接中,您可以看到屏幕截图和包含的库:skydrive.live.com/… 好的,所以我下载了 2 个 jar 文件(xmlpull_1_0_5.jar 和 xpp3_xpath-1.1.4c.jar),编译了您的代码,并在类路径上使用这 2 个 jar 文件运行它。使用命令行java -cp .:./xmlpull_1_0_5.jar:./xpp3-1.1.4c.jar Collections(在OS X上-如果您使用的是Windows,请将':'路径分隔符更改为';',我得到了结果parser implementation class is class org.xmlpull.mxp1.MXParserCachingStrings所以,我能想到的唯一解释是你没有正确设置类路径

以上是关于Java:xmlpull 给我编译错误 (http://www.xmlpull.org/)的主要内容,如果未能解决你的问题,请参考以下文章

org.xmlpull.v1.XmlPullParser 的 Android ProGuard 错误

Java微信开发_Exception_01_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is indirectly ref

我如何通过 XMLPull 解析器获取属性

org.xmlpull.v1.XmlPullParserException:意外类型(位置:END_DOCUMENT null @ 1:0 in java.io.InputStreamReader@c

SAX 解析器与 XMLPull 解析器

由于属性必须是常量表达式错误,Java 代码无法编译