JDK 1.6 und Xerces?
In meinem aktuellen Projekt, wir haben das Ziel, eine JDK-1.6-Laufzeitumgebung. Für ältere rasons, Xerces-JAR-Dateien sind gebündelt in der Anwendung.
Diese werden nicht mehr benötigt, richtig? Das JDK hat (für eine Weile) hatte XML-parsing-libraries gebündelt in das JDK?
Warum nicht einfach versuchen, es ohne Bündelung?
Sie sind nicht mehr oder weniger benötigt als mit 1.5. 1.6 einige bizarre gegabelten version von Xerces, einfach eine andere bizarre version als 1.5. Als pro @DaveNewton, der einzige Weg, zu sagen, wenn es für Sie zu arbeiten ist, es zu versuchen.
Ich glaube, ich habe um einige dependency-Analyse-software, die auf unser Projekt. Ich würde nicht sureprised wenn einige open-source-framework, das wir verwenden, hängt von Xerces direkt anstelle der Verwendung von JAXP.
JDK Xerces hat einige schwerwiegende ungelöste Probleme, und es ist nicht klar, welche version von Apache Xerces ist in jedem JDK enthalten. Ich habe ein komplette parsing-Fehler auf gültiges XML noch in den letzten JDK 1.8_152, die ich könnte einfach verschwinden, indem Xerces 2.11 auf den class-path. (Obwohl das ist nur von 2011.) Zum Glück, JAXP-Schnittstellen und ServieLoader machen es wirklich einfach zu wechseln-Implementierungen!
Xerces-J 2.12.0 veröffentlicht (30. April 2018), siehe hier: xerces.apache.org/news.html
Sie sind nicht mehr oder weniger benötigt als mit 1.5. 1.6 einige bizarre gegabelten version von Xerces, einfach eine andere bizarre version als 1.5. Als pro @DaveNewton, der einzige Weg, zu sagen, wenn es für Sie zu arbeiten ist, es zu versuchen.
Ich glaube, ich habe um einige dependency-Analyse-software, die auf unser Projekt. Ich würde nicht sureprised wenn einige open-source-framework, das wir verwenden, hängt von Xerces direkt anstelle der Verwendung von JAXP.
JDK Xerces hat einige schwerwiegende ungelöste Probleme, und es ist nicht klar, welche version von Apache Xerces ist in jedem JDK enthalten. Ich habe ein komplette parsing-Fehler auf gültiges XML noch in den letzten JDK 1.8_152, die ich könnte einfach verschwinden, indem Xerces 2.11 auf den class-path. (Obwohl das ist nur von 2011.) Zum Glück, JAXP-Schnittstellen und ServieLoader machen es wirklich einfach zu wechseln-Implementierungen!
Xerces-J 2.12.0 veröffentlicht (30. April 2018), siehe hier: xerces.apache.org/news.html
InformationsquelleAutor Glenn Bech | 2011-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bündelung eines XML-parsers ist nicht notwendig, da der 1.4, wenn JAXP wurde Hinzugefügt, um die JRE. Sie verwenden sollten, JAXP und nicht den direkten Aufruf von Xerces. Intern werden die JRE-bundles und verwendet Xerces sowieso (mit "com.Sonne" - Präfix).
InformationsquelleAutor Ingo Kegel
Diese XML-services-plug-in-Anwendung, die Umwelt mit Hilfe der so genannten "service-provider" - Mechanismus.
Funktioniert es wie folgt:
-Djavax.xml.parsers.SAXParserFactory=<some class>
.FactoryFinder
sieht für Immobilien in spezielle properties-Datei. Zum Beispiel${java.home}/lib/jaxp.properties
.META-INF/services/<some service>
z.B.META-INF/services/javax.xml.parsers.SAXParserFactory
.Es ist eine Datei enthalten sollte, factory-Klasse angeben, zum Beispiel
org.apache.xerces.jaxp.SAXParserFactoryImpl
.Also, wenn Sie nicht über die system property verweist offensichtlich factory-Klasse java wird bei der Auswahl der passenden Umsetzung leise.
Dies ist der Weg, die standard-statische
SAXParserFactory
code funktioniert, finden Sie unter link für diese und einige weitere details. Dies sind die Arten paar erste JDK/JRE gebündelt Mechanismen mit einer XML-Bibliothek Ihrer Wahl. Es besteht auch die Möglichkeit zu ersetzen, die dem JDK/JRE gebündelt XML-Bibliotheken komplett mit Java Endorsed Standards Override Mechanism: docs.oracle.com/javase/7/docs/technotes/guides/standards , z.B.-Djava.endorsed.dirs=path_to_folder_containing_new_library_jars
.InformationsquelleAutor svaor
Den parser in das JDK war ein fork von Xerces, aber es ist sehr buggy. Ich würde empfehlen, Produktions-Anwendungen immer die Apache-version von der parser in der Präferenz. Die bugs sind selten, aber Sie sind unberechenbar, und Sie haben nicht nur Einfluss auf die Ausnahmefälle, die nicht im realen Leben gesehen; ich habe gesehen, viele Fälle, in denen ziemlich langweilig XML-Dokumente werden analysiert, und die korrupten Daten an die Anwendung übergeben, die für die Werte des Attributs. Sun/Oracle haben keine Interesse das problem zu lösen. Apache Xerces jeder Zeit.
UPDATE (2018)
Die Probleme mit der JDK-version von Xerces scheinen gelöst zu sein, die in Java 8 ist, soweit ich das sehen kann, also dieser Rat ist überholt.
Wenn die Menschen senden Sie mir die Sächsische bug-reports, erweisen sich aufgrund der JDK-parser-Probleme habe ich nicht mehr die Mühe, um die Probleme zu melden, Oracle, weil damit zu haben scheint, keine Wirkung. Also Nein, kann ich nicht nennen Referenzen.
Seit Java 9 eine ziemlich stabile Version von Xerces (v2.11) ist enthalten im JDK. So dass keine Notwendigkeit zu verwenden die Apache-Version von Xerces Java 9. siehe auch
InformationsquelleAutor Michael Kay
Endorsed Standards Override-Mechanismus funktioniert Prima. Djava.gebilligt.dirs=path_to_folder_containing_new_library_jars um das Problem zu beheben mit JDK 1.6.
Habe ich überprüft, die die oben genannte Lösung im Rahmen der Thymleaf. In einigen Fällen, wenn Sie gehen für LEGACYHTML5-Modus, und wenn Sie NekoHtml parser für Autocorrecting nicht geschlossene html-tags,
Neko hat die Abhängigkeit von Xerces-Gläser. Einstellen der classpath das problem nicht lösen.
Dank s-n-Uschakow.
InformationsquelleAutor justjava