Tôi có một ứng dụng đang chạy một cách vui vẻ dưới Java 1.5 trong khoảng một năm. Chúng tôi đã có các hộp được cập nhật và đã cài đặt Java 1.6.Phương thức Java hoạt động trong 1,5 nhưng không 1,6
Sau khi triển khai ứng dụng lên máy chủ mới, chúng tôi đã tìm thấy ứng dụng đang ném một ngoại lệ khi nó cố chuyển đổi một số XML. Chúng tôi không thể hiểu tại sao điều này xảy ra cho đến khi chúng tôi triển khai nó cục bộ và điều tương tự cũng xảy ra. Sau khi thay đổi SDK thành v1.5, sự cố đã dừng và ứng dụng chạy tốt.
Đây là nguồn của phương pháp:
import java.io.StringWriter;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public static String xmlToString(Node node) {
try {
Source source = new DOMSource(node);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
return stringWriter.getBuffer().toString();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return null;
}
Nó đâm vào "transformer.transform (nguồn, kết quả);" có ngoại lệ:
Exception in thread "main" java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfo(DOM2TO.java:373)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:127)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:94)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:662)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:708)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
Có ai biết bất kỳ thay đổi nào được thực hiện cho Java giữa hai phiên bản có thể gây ra điều này không? Sửa chữa dễ nhất là gì?
Cảm ơn sự giúp đỡ của bạn.
Dường như bạn có một triển khai Xerxes xung đột ở đâu đó trong đường dẫn lớp học của bạn. – akarnokd
Những lọ liên quan đến xml nào nằm trong classpath của bạn? – Yishai