无法使用servlet修改XML文件

时间:2014-11-05 05:36:31

标签: xml java-ee servlets

我正在尝试修改位于我的apache tomcat目录中的xml文件。

我正在使用此代码进行修改:

String filePath = getServletContext().getRealPath("")
            + File.separator +"\\xml_server.xml";
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try {

        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new File(filePath));

        nList = doc.getElementsByTagName("item");

        Node menu = doc.getFirstChild();

            Element item = doc.createElement("item");
            menu.appendChild(item);

            Element id = doc.createElement("id");
            id.appendChild(doc.createTextNode(String.valueOf(nList.getLength()+2)));
            item.appendChild(id);

            Element name = doc.createElement("name");
            name.appendChild(doc.createTextNode(fileName));
            item.appendChild(name);

            Element version = doc.createElement("version");
            version.appendChild(doc.createTextNode("1"));
            item.appendChild(version);

            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(filePath));
            transformer.transform(source, result);



    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

}

以下是我在运行时遇到的错误:

输入例外报告

消息Servlet执行引发异常

说明服务器遇到内部错误,导致无法完成此请求。

例外

javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
java.net.URLClassLoader.defineClass(Unknown Source)
java.net.URLClassLoader.access$100(Unknown Source)
java.net.URLClassLoader$1.run(Unknown Source)
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source)
org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
fr.studec.FileUploadServlet.updateXml(FileUploadServlet.java:131)
fr.studec.FileUploadServlet.doPost(FileUploadServlet.java:106)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

1 个答案:

答案 0 :(得分:1)

很明显,无法找到类org/w3c/dom/ElementTraversal。当一个类不可用或在运行时找不到时,会发生java.lang.NoClassDefFoundError。 此课程是Xalan and Xerces APIs的一部分 发生这种情况有很多可能的原因。

以下链接到之前提出的问题可以说清楚

AppEngine Error [ java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal ]

NoClassDefFoundError: org/w3c/dom/ElementTraversal