나는 XMLtoXML.java라는 클래스가 있고이java.lang.NoClassDefFoundError가 : 조직/DOM4J/문서
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 응용 프로그램으로 실행)으로 실행하면 잘 작동합니다. 이 클래스를 웹 응용 프로그램의 일부로 추가하고 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 항아리 존재하는 그. 누구든지 문제에 대한 아이디어가 있습니까?
음, 클래스 경로에 dom4j-full.jar를 어떻게 포함 시키려고 했습니까? 정말로 * 존재하지 않는 것 같아요. 아니면 최소한 jaxen에 접근 할 수 없어요. 클래스 패스에'jaxen'이 어디에 있습니까? –
my [classfinder] (http://www.adarshr.com/papers/classfinder)를 사용하여 특정 클래스가 포함 된 jar를 검색하십시오. – adarshr
@JonSkeet Dom4j는 stacktrace를 보면 처음부터있을 것 같지만 jaxen이'Document' 클래스를 찾을 때 nomore를 사용합니다. 이상 하네! – javanna