关键字: provider org.apache.xalan.processor.transformerfactoryimpl n

本文分析了Struts2框架启动时出现的TransformerFactoryConfigurationError异常的原因,并提供了解决方案,涉及JDK版本与Tomcat配置冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字: provider org .apache .xalan .processor .transformerfactoryimpl n

完整的Exception:
Exception starting filter struts2
javax.xml.transform.TransformerFactoryConfigurationError: Provider org .apache .xalan .processor .TransformerFactoryImpl not found
at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<clinit>(DomHelper.java :167)
at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java :115)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java :786)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java :132)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java :100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java :130)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java :52)
at org .apache .struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java :398)
at org .apache .struts2.dispatcher.Dispatcher.init(Dispatcher.java :455)
at org .apache .struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java :201)
at org .apache .catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java :225)
at org .apache .catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java :308)
at org .apache .catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java :79)
at org .apache .catalina.core.StandardContext.filterStart(StandardContext.java :3698)
at org .apache .catalina.core.StandardContext.start(StandardContext.java :4349)
at org .apache .catalina.core.ContainerBase.addChildInternal(ContainerBase.java :823)
at org .apache .catalina.core.ContainerBase.addChild(ContainerBase.java :807)
at org .apache .catalina.core.StandardHost.addChild(StandardHost.java :595)
at org .apache .catalina.core.StandardHostDeployer.install(StandardHostDeployer.java :277)
at org .apache .catalina.core.StandardHost.install(StandardHost.java :832)
at org .apache .catalina.startup.HostConfig.deployDirectories(HostConfig.java :701)
at org .apache .catalina.startup.HostConfig.deployApps(HostConfig.java :432)
at org .apache .catalina.startup.HostConfig.start(HostConfig.java :983)
at org .apache .catalina.startup.HostConfig.lifecycleEvent(HostConfig.java :349)
at org .apache .catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java :119)
at org .apache .catalina.core.ContainerBase.start(ContainerBase.java :1091)
at org .apache .catalina.core.StandardHost.start(StandardHost.java :789)
at org .apache .catalina.core.ContainerBase.start(ContainerBase.java :1083)
at org .apache .catalina.core.StandardEngine.start(StandardEngine.java :478)
at org .apache .catalina.core.StandardService.start(StandardService.java :480)
at org .apache .catalina.core.StandardServer.start(StandardServer.java :2313)
at org .apache .catalina.startup.Catalina.start(Catalina.java :556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :25)
at java .lang.reflect.Method.invoke(Method.java :585)
at org .apache .catalina.startup.Bootstrap.start(Bootstrap.java :287)
at org .apache .catalina.startup.Bootstrap.main(Bootstrap.java :425)


错误原因:
认为是由于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"
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.


如果你不会这样做,就使用1.4的JDK和tomcat5.0
或者JDK1.5 tomcat5.5 这2种类型才是匹配的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值