当前位置: 首页 > 面试题库 >

java.lang.NoClassDefFoundError:org / dom4j / Document

公西永嘉
2023-03-14
问题内容

我有一个名为XMLtoXML.java的类,这是它的方法之一…

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public Object[] process(Object data) {

    String templateXML = null;
    Object result[] = null;
    String inputxml = null;
    String templateNumber = null;
    Iterator iterator = null;
    String scenarioConfigUrl = null;
    Node inputNode;
    Node outputNode;
    String subTemplateXML = null;
    String outputXml = null;

    if (delay != null) {

        long time = Long.parseLong(delay);
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    inputxml = (String) metadata.get(Constants.REQUEST);
    if (inputxml == null) {
        throw new NullRecordException("input data to XMLtoXML class  in   
      metadata map is null");
    }
    Document inputXMLDocument = Dom4jUtils.getDocument(inputxml);

代码块的最后一行使用dom4j Document.i在我的类路径中有dom4j-full.jar。
如果我以独立形式运行此类(在eclipse中以Java应用程序运行),那么它将正常工作。当我将该类作为Web应用程序的一部分和dom4j-full.jar添加到我的类路径中时。
我得到以下例外。

java.lang.NoClassDefFoundError: org/dom4j/Document
   at org.jaxen.dom4j.DocumentNavigator.getDocumentNode(DocumentNavigator.java:346)
   at org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate
    (DefaultAbsoluteLocationPath.java:102)

   at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102)
   at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:674)
   at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:213)
   at org.jaxen.BaseXPath.selectSingleNode(BaseXPath.java:234)
   at org.dom4j.xpath.DefaultXPath.selectSingleNode(DefaultXPath.java:156)
   at org.dom4j.tree.AbstractNode.selectSingleNode(AbstractNode.java:188)
   at org.amdocs.convert.XMLtoXML.process(XMLtoXML.java:134)
   at org.openadaptor.core.node.Node.processSingleRecord(Node.java:148)
   at org.openadaptor.core.node.Node.process(Node.java:170)
   at org.openadaptor.core.node.ProcessorNode.process(ProcessorNode.java:96)
   at org.openadaptor.core.router.AbstractRouter.process(AbstractRouter.java:239)
   at org.openadaptor.core.router.AbstractRouter.process(AbstractRouter.java:223)
   at org.openadaptor.core.router.AbstractRouter.processResponse(AbstractRouter.java:249)
   at org.openadaptor.core.router.AbstractRouter.process(AbstractRouter.java:239)
   at org.openadaptor.core.router.AbstractRouter.process(AbstractRouter.java:223)
   at org.openadaptor.core.router.AbstractRouter.process(AbstractRouter.java:180)
   at org.openadaptor.core.adaptor.Adaptor.process(Adaptor.java:285)
   at org.openadaptor.core.node.Node.callChainedMessageProcessor(Node.java:213)
   at org.openadaptor.core.node.Node.process(Node.java:199)
   at org.openadaptor.core.node.ReadNode.process(ReadNode.java:241)
   at org.openadaptor.core.node.ReadNode.run(ReadNode.java:196)
   at java.lang.Thread.run(Thread.java:619)

我也确信dom4j jar存在于classpath中。有人对问题有任何想法吗?


问题答案:

看起来dom4j-full.jar包含dom4jjaxen。从您的stacktrace可以理解dom4j,它位于类路径中,并且可以找到jaxen,但是在jaxen查找时dom4j找不到。我认为从dom4j某个原因加载的jaxen
并不是出于某种原因,dom4j-full.jar而是由于您在应用程序服务器类路径中(当然不在eclipse中)存在的另一个原因,也许是从其他类加载器加载的。也许您jaxen.jar在共享库中有一个或类似的东西。



 类似资料:
  • Dom4j 是一个用于处理 XML 的开源框架,该框架与 XPath 集成在一起,并完全支持 DOM、SAX、JAXP 和 Java 平台(例如 Java 2 Collections)。 示例代码: import java.net.URL;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io

  • DOM4J是一个基于Java的开源库,用于解析XML文档。 它是一种高度灵活且内存高效的API。 它是Java优化的,使用像List和Arrays这样的Java集合。 DOM4J适用于DOM,SAX,XPath和XSLT。 它可以解析内存占用非常少的大型XML文档。 环境设置 (Environment Setup) 要使用DOM4J解析器,您应该在应用程序的类路径中使用dom4j-1.6.1.ja

  • 问题内容: 我正在使用Eclipse IDE,并且正在编写servlet。Servlet应该接受html文件中的值,并相应地返回JSON响应。 我的doPost()是: 当我在Eclipse中运行此servlet时,会出现一个文件下载对话框。 当使用Tomcat在Eclipse外部运行时,出现错误: 行Server1.doPost(Server1.java:25)指的是 我已经将org.json.

  • 问题内容: 我正在通过main在eclipse中执行一个类,结果我收到此错误 我正在使用jRE6。 请帮我解决这个问题 问题答案: 确保在构建路径上。 http://mirrors.ibiblio.org/pub/mirrors/maven2/xalan/xalan/2.7.1/xalan-2.7.1.jar

  • 问题内容: 我总是遇到以下错误。有人可以帮我吗? 当我编译以下代码时。我已经在网上搜索了,但没有找到解决方案。添加saveToCassandra时出现错误。 我的pom是以下内容。 问题答案: org.apache.spark.Logging在Spark版本1.5.2或更低版本中可用。它不在2.0.0中。请更改版本如下

  • 问题内容: 我正在尝试在Tomcat中进行部署时在Eclipse中使用Hibernate进行初始设置。 我遇到以下问题: 我已经在线浏览了我的问题,并且我知道这与项目类路径有关。 我已在我的项目中添加了一个用户库,其中包含hibernate下载中“必需”目录下的所有jars,但这似乎不起作用。 请在这里找到我的项目的屏幕截图: 问题答案: 您收到错误消息是因为hibernate库对Tomcat不可