Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会遇到NoClassDefFoundError?_Java - Fatal编程技术网

Java 为什么我会遇到NoClassDefFoundError?

Java 为什么我会遇到NoClassDefFoundError?,java,Java,有人能告诉我为什么会出现这个错误,以及如何解决这个问题吗 线程“main”java.lang.NoClassDefFoundError中出现异常:org/codehaus/stax2/ri/Stax2ReaderAdapter 位于org.codehaus.staxmate.dom.DOMConverter.\u build(DOMConverter.java:188) 位于org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConve

有人能告诉我为什么会出现这个错误,以及如何解决这个问题吗

线程“main”java.lang.NoClassDefFoundError中出现异常:org/codehaus/stax2/ri/Stax2ReaderAdapter 位于org.codehaus.staxmate.dom.DOMConverter.\u build(DOMConverter.java:188) 位于org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:171) 位于org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:152) 位于org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:131) 位于xmlprocessing.api.STAXModifyCV.main(STAXModifyCV.java:68) 原因:java.lang.ClassNotFoundException:org.codehaus.stax2.ri.Stax2ReaderAdapter 位于java.net.URLClassLoader$1.run(URLClassLoader.java:202) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:190) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:307) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 还有5个 Java结果:1

我写了下面的代码:

    //-*-*-
    FileInputStream input = new FileInputStream("cv.xml");
    XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(input);
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    //-*-*- get new entries from input stream
    System.out.println("<< Sahar CV >>\n -> Modify the first reference\n    ** Modify The Name **");
    System.out.print("    Enter degree : ");
    String degree = in.readLine();
    System.out.print("    Enter first name : ");
    String fName = in.readLine();
    System.out.print("    Enter last name : ");
    String lName = in.readLine();
    System.out.println("    ** Modify The Address ** ");
    System.out.print("    Enter new city : ");
    String newCity = in.readLine();
    System.out.print("    Enter new country : ");
    String newCountry = in.readLine();

    //-*-*- let the reader point at the first "reference" element
    int eventType;
    boolean ref = false, fname = false;
    while (!ref && reader.hasNext()) {
        eventType = reader.next();
        switch (eventType) {
            case XMLEvent.START_ELEMENT:
                if (reader.getLocalName().equalsIgnoreCase("references")) {
                    ref = true;
                    break;
                }
        }
    }
    System.out.println("I am here");

    //-*-*- start modification
    Document doc = new DOMConverter().buildDocument(reader);
    Element firstRef = (Element)doc.getElementsByTagName("reference").item(0);
    NodeList name = (NodeList)firstRef.getElementsByTagName("name");
    //-*-*- modify the degree (Dr. , Eng. , Dev. ,etc)
    Attr att = (Attr)name.item(0).getAttributes().item(0);
    ((Node)att).setNodeValue(degree);
    //-*-*- modify first name
    NodeList firstName = (NodeList)firstRef.getElementsByTagName("fname");
    NodeList firstNameChilds = (NodeList)firstName.item(0).getChildNodes();
    ((Node)firstNameChilds.item(0)).setNodeValue(fName);
    //-*-*- modify last name
    NodeList lastName = (NodeList)firstRef.getElementsByTagName("lname");
    NodeList lastNameChilds = (NodeList)lastName.item(0).getChildNodes();
    ((Node)lastNameChilds.item(0)).setNodeValue(lName);
    //-*-*- modify city
    NodeList city = (NodeList)firstRef.getElementsByTagName("city");
    NodeList cityChilds = (NodeList)city.item(0).getChildNodes();
    ((Node)cityChilds.item(0)).setNodeValue(newCity);
    //-*-*- modify country
    NodeList country = (NodeList)firstRef.getElementsByTagName("country");
    NodeList countryChilds = (NodeList)country.item(0).getChildNodes();
    ((Node)countryChilds.item(0)).setNodeValue(newCountry);

    reader.close();
    input.close();
    //-*-*- write DOM document
    FileOutputStream out = new FileOutputStream("cv.xml");
    XMLStreamWriter sw = XMLOutputFactory.newInstance().createXMLStreamWriter(out);

    new DOMConverter().writeDocument(doc, sw);
    sw.close();
    out.close();
//-*-*-
FileInputStream输入=新的FileInputStream(“cv.xml”);
XMLStreamReader reader=XMLInputFactory.newInstance().createXMLStreamReader(输入);
BufferedReader in=新的BufferedReader(新的InputStreamReader(System.in));
//-*-*-从输入流中获取新条目
System.out.println(“>\n->修改第一个引用\n**修改名称**”);
系统输出打印(“输入学位:”);
字符串度数=in.readLine();
System.out.print(“输入名字:”);
字符串fName=in.readLine();
System.out.print(“输入姓氏:”);
字符串lName=in.readLine();
System.out.println(“**修改地址**”);
系统输出打印(“进入新城市:”;
字符串newCity=in.readLine();
系统输出打印(“输入新国家:”;
字符串newCountry=in.readLine();
//-*-*-让读者指向第一个“reference”元素
int事件类型;
布尔值ref=false,fname=false;
而(!ref&&reader.hasNext()){
eventType=reader.next();
开关(事件类型){
案例XMLEvent.START_元素:
if(reader.getLocalName().equalsIgnoreCase(“引用”)){
ref=真;
打破
}
}
}
System.out.println(“我在这里”);
//-*-*-启动修改
Document doc=new DOMConverter().buildDocument(读卡器);
元素firstRef=(元素)doc.getElementsByTagName(“参考”)。项(0);
NodeList name=(NodeList)firstRef.getElementsByTagName(“名称”);
//-*-*-修改学位(博士、工程师、开发人员等)
Attr att=(Attr)name.item(0.getAttributes().item(0);
((节点)att.setNodeValue(度);
//-*-*-修改名字
NodeList firstName=(NodeList)firstRef.getElementsByTagName(“fname”);
NodeList firstNameChilds=(NodeList)firstName.item(0.getChildNodes();
((节点)firstNameChilds.item(0)).setNodeValue(fName);
//-*-*-修改姓氏
NodeList lastName=(NodeList)firstRef.getElementsByTagName(“lname”);
NodeList lastNameChilds=(NodeList)lastName.item(0.getChildNodes();
((节点)lastNameChilds.item(0)).setNodeValue(lName);
//-*-*-修改城市
NodeList city=(NodeList)firstRef.getElementsByTagName(“城市”);
NodeList cityChilds=(NodeList)city.item(0.getChildNodes();
((节点)cityChilds.item(0)).setNodeValue(newCity);
//-*-*-修改国家
NodeList country=(NodeList)firstRef.getElementsByTagName(“国家”);
NodeList countryChilds=(NodeList)country.item(0.getChildNodes();
((节点)countryChilds.item(0)).setNodeValue(新国家);
reader.close();
input.close();
//-*-*-编写DOM文档
FileOutputStream out=新的FileOutputStream(“cv.xml”);
XMLStreamWriter sw=XMLOutputFactory.newInstance().createXMLStreamWriter(输出);
新的DOMConverter().写文件(doc,sw);
sw.close();
out.close();

您需要确保正确的Woodstox在您的路径上。基本上,您使用的是在该jar中实现的类,但是由于jar不在路径中,Java不知道您引用的是什么类

这意味着发现一个.class文件不包含所需的类,这可能是因为包与目录结构不一致,也可能是因为编译后重命名了该文件。还有其他原因,但这是最常见的

很抱歉,我否决了3个答案,但突然产生了疑问,需要再次检查我的想法。。。结果比我想象的要复杂。然而,我在这里为您找到了一个非常完整的答案:

为什么对这些答案都投了反对票?我已经编辑了剩下的两个答案,现在您可以删除反对票了。