2012-09-05 7 views
5

Ich habe eine Tomcat 5.5-Webanwendung, die die Apache Commons-Configuration-Bibliothek verwendet, um eine XML-Konfigurationsdatei zur Laufzeit zu generieren. Die Commons-Konfiguration nutzt dafür die javax.xml.transform JAXP API. nie xalan.jar gebündelt, anstatt dich auf der Plattform Standard-XSLT-ImplementierungJAXP XSLT-Transformer mit falscher Implementierung standardmäßig

Caused by: javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found 
    at javax.xml.transform.TransformerFactory.newInstance(Unknown Source) 

In früheren Versionen, ich habe:

Seit 7 Java aktualisieren, schlägt der Vorgang fehl mit folgenden Fehlermeldung.

Einige Dinge, die ich habe überprüft:

  • Es gibt keine META-INF/services/javax.xml.transform.TransformerFactory Einträge in keinem meiner Anwendung JAR-Dateien, Bibliothek Gläser oder in den Tomcat Gläser
  • Die javax.xml.transform.TransformerFactory Systemeigenschaft nicht gesetzt ist (überprüft bei Laufzeit durch jvisualvm)
  • Es gibt keine jaxp.properties Datei im Verzeichnis jre/lib

Laufen mit -Djaxp.debug=1 erzeugt die folgende Ausgabe:

JAXP: find factoryId =javax.xml.transform.TransformerFactory 
JAXP: loaded from fallback value: org.apache.xalan.processor.TransformerFactoryImpl 

Woher kommt dieser Fallbackwert? Oracle liefert den Xalan-Transformator, aber seit 1.7 hat es als com.sun.org.apache.xalan.processor... umgepackt. Sollte nicht der der Fallback-Wert sein?

+0

Haben Sie 'CATALINA_HOME/lib' überprüft? – Brad

+0

Tomcat 5.5 verwendet nicht $ CATALINA_HOME/lib. Afaik, das ist Tomcat 6+. Ich habe '$ CATALINA_HOME/server',' common' und 'shared' vergeblich eingecheckt. – Jonathan

+0

Die Klasse 'org.apache.xalan.processor.TransformerFactoryImpl' könnte aus einem älteren JDK1.4-Setup stammen, also erwarte ich, dass irgendwo auf Ihrer' CLASSPATH' – Brad

Antwort

8

Das Problem selbst gefunden. Es stellte sich heraus, dass ich die apache-tomcat-5.5.23-compat Dateien installiert hatte, als ich von Java 1.4.2 migrierte. Die Lösung war, alles unter dem Verzeichnis $CATALINA_HOME/common/endorsed (insbesondere xercesImpl.jar und xml-apis.jar) und den bin/jmx.jar Dateien zu entfernen.

0

Das gleiche Problem, das ich auch mit Glassfish Server V3.1 bekommen habe und indem ich xalan-2.7.0.jar in das Verzeichnis $ GLASSFISH_HOME \ lib \ indossiert gesetzt habe, ist das Problem gelöst.

Verwandte Themen