【问题标题】:Unable to modify XML file in by using servlet无法使用 servlet 修改 XML 文件
【发布时间】:2015-01-01 05:49:11
【问题描述】:

我正在尝试修改位于我的 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)

【问题讨论】:

    标签: xml jakarta-ee servlets


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多