exception
javax.servlet.ServletException: Error occured during request processing: Provider org.apache.xalan.processor.TransformerFactoryImpl not found org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:757) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) com.cotel.util.filter.EncodingFilter.doFilter(EncodingFilter.java:41)
错误原因:
认为是由于jdk1.5 与 tomcat5.0之间的关于 TransformerFactoryImpl 类的冲突造成的。
tomcat-5.0.28/common/endorsed下有两个jar包:xercesImpl.jar和xml-apis.jar,其中的类 javax.xml.transform.TransformerFactory 与jdk1.5中的类org.apache.xalan.processor.TransformerFactoryImpl其实是同一个类。
认为是由于jdk1.5 与 tomcat5.0之间的关于 TransformerFactoryImpl 类的冲突造成的。
tomcat-5.0.28/common/endorsed下有两个jar包:xercesImpl.jar和xml-apis.jar,其中的类 javax.xml.transform.TransformerFactory 与jdk1.5中的类org.apache.xalan.processor.TransformerFactoryImpl其实是同一个类。
in tomcat java is called with the following argument:
-Djava.endorsed.dirs="X:/my_app/Portal/tomcat/common/endorsed"
-Djava.endorsed.dirs="X:/my_app/Portal/tomcat/common/endorsed"
In this directory you find two jar files: xercesImpl.jar and xml-apis.jar needed by tomcat and that must be loaded before all xmsl stuff present in the jdk (1.4 naming problem). And in the file xml-apis.jar the TransformerFactoryImpl is set to "org.apache.xalan.processor.TransformerFactoryImpl".
解决办法:
1. 将xml-apis.jar移出endorsed文件夹。
2. 用xalan系列jar包替换原来的xercesImpl.jar和xml-apis.jar。
xalan系列jar包:serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar。
3. For other application, just check this file or dom3-xml-apis.jar in your class path.