Java-Methode funktioniert in der 1.5 aber nicht 1.6
Ich habe eine Anwendung, die läuft schon gerne unter Java 1.5 für etwa ein Jahr. Wir hatten nur die Felder aktualisiert und hatte Java 1.6 installiert.
Nach der Installation der app auf dem neuen server die wir gefunden haben, ist die Anwendung eine Ausnahme auslösen, wenn er versucht zu transformieren XML. Wir konnten nicht verstehen, warum dies geschieht, bis wir schickten Sie lokal und das gleiche passierte. Nach dem ändern des SDK v1.5 das problem beendet und die Anwendung läuft einwandfrei.
Hier ist die Methode, Quelle:
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;
}
Es zu Abstürzen auf der "Transformator.transform(source, result);" - Zeile mit der Ausnahme:
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)
Kennt jemand irgendwelche änderungen an Java zwischen den zwei Versionen, die Ursache wäre? Was wäre die einfachste Lösung?
Vielen Dank für Ihre Hilfe.
InformationsquelleAutor der Frage James Camfield | 2009-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann mich nicht erinnern, wenn es war zwischen 1.4 und 1.5 oder 1.5 und 1.6, aber die Xalan-Bibliotheken, die im Lieferumfang der JVM von Sun verändert Ihrem Paket-Namen. Ich lief in etwas ähnliches vor etwa 2 Jahren. Ich denke, was ich zu tun hatte, wurde ausdrücklich für den Versand meiner eigenen xalan-Implementierung, um das problem zu beheben.
UPDATE: vielleicht war Das was ich gedacht habe, obwohl es immer noch damit zusammenhängen könnte dein problem link-text
InformationsquelleAutor der Antwort Chris Boran
Dieses problem tritt bekanntermaßen auf JDK 1.6 mit einer älteren xerces.jar die, wenn Sie auf dem Klassenpfad, stellt seine eigenen DocumentBuilderFactory.
Das problem nicht auftreten, wenn die Plattform auf die Werkseinstellung.
Möchten Sie vielleicht zu prüfen, Ihre WEB-INF/lib oder gleichwertig.
InformationsquelleAutor der Antwort billyblind
Es ist das problem, weil der jar - (Xalan) - version-Konflikt. Entfernen Sie die Gläser und geben einen Versuch
InformationsquelleAutor der Antwort Niger
Stoße ich auf das gleiche java.lang.AbstractMethodError in meinem code.
In der Zeit, wenn Sie die version alle Bibliotheken keine option war, aber ich fand einen workaround, durch den Vergleich mit anderen code, der auf mysteriöse Weise gearbeitet. Vielleicht hilft das auch anderen, die es gibt.
Es hatte alles zu tun mit dem Dokument, das ich ging in DOMSource(). Ursprünglich ich hatte ein Dokument erstellt in der standard-Weg:
Zu arbeiten, um dieses Problemändere ich die Fabrik wie folgt:
Nun ich bekomme nicht mehr die Ausnahme.
InformationsquelleAutor der Antwort Robert Patterson
Können Sie verwenden die neueste version von Xerces (ich glaube, es sollte compitable mit JDK1.6)
InformationsquelleAutor der Antwort Muhammad Hewedy
Ich hatte das gleiche problem & ersetzt die xercesImpl-2.0.2.jar Datei mit xercesImpl-2.11.0.jar in der Klasse Pfad meiner Anwendung. Seine Arbeitsmethoden in Ordnung.
InformationsquelleAutor der Antwort spolishe
Dieser arbeitete für mich.
InformationsquelleAutor der Antwort Dheeraj Kumar