Mam aplikację, która działa szczęśliwie w Javie 1.5 przez około rok. Właśnie zaktualizowaliśmy pudełka i zainstalowaliśmy Javę 1.6.Metoda Java działa w wersji 1.5, ale nie 1.6
Po wdrożeniu aplikacji na nowym serwerze okazało się, że aplikacja rzuca wyjątek podczas próby przekształcenia niektórych plików XML. Nie mogliśmy zrozumieć, dlaczego tak się dzieje, dopóki nie wdrożyliśmy go lokalnie i tak samo się stało. Po zmianie zestawu SDK na wersję 1.5 problem został zatrzymany, a aplikacja działa poprawnie.
Tutaj jest metoda za źródło:
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;
}
To upaść na "transformer.transform (źródło, wynik);" z wyjątkiem:
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)
Czy ktoś wie o jakichkolwiek zmianach dokonanych w Javie między dwiema wersjami, które by to spowodowały? Jaka byłaby najłatwiejsza naprawa?
Dzięki za pomoc.
Wygląda na to, że w ścieżce klasy występuje sprzeczna implementacja Xerxes. – akarnokd
Jakie słoiki związane z xml znajdują się w ścieżce klas? – Yishai