Tôi có một lớp được gọi là XMLtoXML.java và đây là một trong những phương pháp đó là ...java.lang.NoClassDefFoundError: org/dom4j/Document
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);
dòng cuối cùng của khối mã sử dụng một dom4j Document.i có dom4j-full.jar trong classpath của tôi. nếu tôi chạy lớp này là độc lập (Chạy như ứng dụng Java trong nhật thực) thì nó hoạt động tốt. khi tôi thêm lớp này như là một phần của ứng dụng web và dom4j-full.jar trong classpath của tôi.
tôi nhận được ngoại lệ sau.
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)
Tôi cũng chắc chắn rằng bình dom4j có trên đường dẫn lớp. Bất kỳ ai có bất kỳ ý tưởng nào về vấn đề?
Vâng, bạn đã cố gắng bao gồm dom4j-full.jar trong đường dẫn lớp học của mình như thế nào? Có vẻ như nó thực sự * không * ở đó - hoặc ít nhất là không thể truy cập vào 'jaxen'. Trường hợp là 'jaxen' trên classpath của bạn? –
Sử dụng [kính ngắm] của tôi (http://www.adarshr.com/papers/classfinder) để tìm kiếm (các) lọ chứa một lớp nhất định. – adarshr
@JonSkeet Dom4j dường như ở đó ngay từ đầu nếu bạn nhìn vào stacktrace, nhưng nomore khi jaxen tìm kiếm lớp 'Document'. Lạ nhỉ! – javanna