Die Standard-JAXP-Konfiguration des JDK kann über die allgemeinen Mechanismen der JAXP-Konfiguration verändert werden. Weil die aber nicht allgemein bekannt sind, werden sie am Beispiel von Xerces und Xalan nachfolgend erläutert.
Die Java-Runtime liest die Werte folgender JAXP-Umgebungsvariablen ein und lädt dann die dort angegebene Java-Klasse:
"javax.xml.parsers.DocumentBuilderFactory" "javax.xml.parsers.SAXParserFactory" "javax.xml.transform.TransformerFactory"
Diese Umgebungsvariablen können auf unterschiedliche Weise gesetzt werden, wie die nachfolgende Liste zeigt. Eine Konfigurationsmöglichkeit, die eine andere übersteuert, steht in der Aufzählung weiter oben.
Die JAXP Umgebungsvariablen können im Programm selber gesetzt werden:
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"); System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl"); System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl");
Die Konfigurationsdaten können mit der Startoption -D
in der
Umgebungsvariablen _JAVA_OPTIONS
bereitgestellt werden.
Hier wird nur ein Wert als Beispiel dargestellt, drei sind natürlich auch möglich:
set _JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory= org.apache.xalan.processor.TransformerFactoryImpl
Die Konfigurationsdaten können mit der Startoption -D
in der
Umgebungsvariablen JAVA_TOOL_OPTIONS
bereitgestellt werden.
Diese Umgebungsvariable wird von einigen JDK-Implementierungen ausgewertet.
Auch hier wird nur ein Wert als Beispiel:
set JAVA_TOOL_OPTIONS=-Djavax.xml.transform.TransformerFactory= org.apache.xalan.processor.TransformerFactoryImpl
Die Konfigurationsdaten können in der Datei jaxp.properties
im Verzeichnis JAVA_HOME/jre/lib
zur Verfügung gestellt werden:
# # Sample configuration, file %JAVA_HOME%\jre\lib\jaxp.properties. # # Defaults in Java 1.7.0, Windows: # #javax.xml.parsers.DocumentBuilderFactory = \ com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl #javax.xml.parsers.SAXParserFactory = \ com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl #javax.xml.transform.TransformerFactory = \ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl # # Values for Xerces and Xalan: # javax.xml.parsers.DocumentBuilderFactory = \ org.apache.xerces.jaxp.DocumentBuilderFactoryImpl javax.xml.parsers.SAXParserFactory = \ org.apache.xerces.jaxp.SAXParserFactoryImpl javax.xml.transform.TransformerFactory = \ org.apache.xalan.processor.TransformerFactoryImpl
Die JAXP-Umgebungsvariablen können ANT über die Umgebungsvariable
ANT_OPTS
gesetzt werden:
set ANT_OPTS=-Djavax.xml.transform.TransformerFactory= org.apache.xalan.processor.TransformerFactoryImpl set ANT_OPTS=-Djavax.xml.parsers.DocumentBuilderFactory= org.apache.xerces.jaxp.DocumentBuilderFactoryImpl set ANT_OPTS=-Djavax.xml.parsers.SAXParserFactory= org.apache.xerces.jaxp.SAXParserFactoryImpl
Die deklarierten XML/XSLT-Klassen müssen entweder im Classpath oder im
Verzeichnis JAVA_HOME\jre\lib\ext
liegen.
Letzteres ist nicht zu bevorzugen, weil kaum jemand diese Möglichkeit
kennt und eine eventuelle Fehlersuche wegen dieses Nicht-Wissens unnötig
lange dauern würde.
Beachten Sie, dass Eclipse seine Umgebungsvariablen beim Start einliest und anschließend nicht verändert. Insofern müssen Sie Eclipse nach der Änderung einer Umgebungsvariablen neu starten.