XMLOutputFactory.newInstance()给我一个NoClassDefFound错误

时间:2013-07-09 19:47:44

标签: noclassdeffounderror saxparser

所以这是我的功能:

    public void writeUserToFile() {
    File newXmlFile = new File("res\\SavedShoppers.xml");
    try {
        ArrayList<User> oldUsers = null;
        if(newXmlFile.length() > 0){
            oldUsers = buildUsersFromFile(); // get old users
            // remove current user from old users list to eliminate duplicates
            for (int i = 0; i < oldUsers.size(); i++) {
                if (oldUsers.get(i).equals(this))
                    oldUsers.remove(i);
            }
        }
        OutputStream outputStream = new FileOutputStream(newXmlFile);
        XMLStreamWriter out = XMLOutputFactory.newInstance()
                .createXMLStreamWriter(
                        new OutputStreamWriter(outputStream, "utf-8"));
        out.writeStartDocument();
            out.writeStartElement("user");
            out.writeAttribute("userId", String.valueOf(getUserId()));
            out.writeAttribute("name", getName());
            for (ShoppingList sl : getShoppingLists()) {
                out.writeStartElement("shoppingList");
                out.writeAttribute("name", sl.getName());
                for (ListItem li : sl.getItems()) {
                    out.writeStartElement("listItem");
                    out.writeAttribute("name", li.getName());
                    out.writeAttribute("quantity",
                            String.valueOf(li.getQuantity()));
                    out.writeEndElement();
                }
                out.writeEndElement(); // shoppingList
            }
            out.writeEndElement(); // user
        out.writeEndDocument();
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

所以我想要完成的是将用户保存到XML文件以便稍后撤出。这是一个非常简单的购物清单应用程序,可以在您购物时创建购物车,以帮助您随时完成购买。这是我得到的错误:

java.lang.NoClassDefFoundError:javax/xml/stream/XMLOutputFactory

我调试时正在这一行:

XMLStreamWriter out = XMLOutputFactory.newInstance().createXMLStreamWriter(new OutputStreamWriter(outputStrem, "utf-8"))

而且我不确定我做错了什么......我已经做了几天了,所以我没有想法......任何帮助或方向都会很棒!

谢谢! 乔恩

1 个答案:

答案 0 :(得分:0)

这是在我的构建路径中。我正在使用jre7并且在我的构建路径中有这个,但是我的构建路径中也有jer5所以java在那里寻找它而不是7 ...并且该类在5中不存在..因此NoClassDefFound错误! :) 好极了。由于没有人回复,我认为这不是一个常见的问题,所以我希望将来有人能够在找到同样的错误时找到这个帖子!