2010-10-29 3 views
1

Может ли кто-нибудь сказать мне, почему я получаю эту ошибку и как решить проблему?Почему я получаю NoClassDefFoundError?

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/stax2/ri/Stax2ReaderAdapter at org.codehaus.staxmate.dom.DOMConverter._build(DOMConverter.java:188) at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:171) at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:152) at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:131) at xmlprocessing.api.STAXModifyCV.main(STAXModifyCV.java:68) Caused by: java.lang.ClassNotFoundException: org.codehaus.stax2.ri.Stax2ReaderAdapter at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 5 more Java Result: 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(); 
+1

Почему все пустые голоса за эти ответы? – duffymo

ответ

0

Извините, что я проголосовал за 3 ответа, но внезапно возникло сомнение, и вам нужно было дважды проверить, что я думал ... и это оказалось сложнее, чем я думал. Однако я нашел для вас очень полный ответ: http://mindprod.com/jgloss/runerrormessages.html#NOCLASSDEFFOUNDERROR

+0

Я отредактировал оба оставшихся ответа, чтобы теперь вы могли удалить ваш downvote. – akf

+0

спасибо, я просто сделал. – Damien

4

Вы должны убедиться, что право Woodstox находится на вашем пути. В принципе, вы используете класс, который реализован в этой банке, но поскольку в jar нет пути, Java не знает, какой класс вы ссылаетесь.

3

Это означает, что был найден файл .class, который не содержит ожидаемого класса, потому что пакет не соответствует структуре каталогов или потому, что файл был переименован после компиляции. Есть и другие причины, но это наиболее распространенное явление.

Смежные вопросы