﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-一个Java民工的Space-随笔分类-Struts2</title><link>http://www.blogjava.net/wjywilliam/category/31077.html</link><description>Consciousness Of Programming - wjywilliam</description><language>zh-cn</language><lastBuildDate>Sun, 27 Apr 2008 15:32:09 GMT</lastBuildDate><pubDate>Sun, 27 Apr 2008 15:32:09 GMT</pubDate><ttl>60</ttl><item><title>Jdk1.5 + Tomcat 5.0.28环境下运行Struts2的项目报错及解决方法</title><link>http://www.blogjava.net/wjywilliam/archive/2008/04/27/196637.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Sun, 27 Apr 2008 13:26:00 GMT</pubDate><guid>http://www.blogjava.net/wjywilliam/archive/2008/04/27/196637.html</guid><wfw:comment>http://www.blogjava.net/wjywilliam/comments/196637.html</wfw:comment><comments>http://www.blogjava.net/wjywilliam/archive/2008/04/27/196637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjywilliam/comments/commentRss/196637.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjywilliam/services/trackbacks/196637.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt"><strong><span style="font-size: 10pt"><strong>场景：运行运用了</strong>Struts2.0 framework的项目时发生的错误。<br />
<br />
<strong>环境：</strong>sun jdk1.5.0_15 + tomcat 5.0.28</span></strong><br />
<br />
<span style="font-size: 10pt">原本以为自己玩了eclipse和myeclipse这么多年，一向项目的配置发布用myeclipse虽然没有驾轻就熟，但是至少不会被难道，这次确倒在了这个jdk 1.5及tomcat 5.0.28的环境上。谁叫以前一直没有试过在tomcat5.0.28上发布struts2呢，刚好现在客户说一定要用struts2，刚好自己也想偿偿新，却偿到了这个苦头。开始还以为是自己用myelipse deploy的问题，结果却不是，为啥别人的tomcat5.5就能好好的run呢？废话不少说，现在就看以下exception：</span><br />
<br />
</span><span style="font-size: 10pt"><strong>完整的Exception：<br />
</strong>Exception starting filter struts2<br />
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found<br />
&nbsp;at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)<br />
&nbsp;at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.&lt;clinit&gt;(DomHelper.java:167)<br />
&nbsp;at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)<br />
&nbsp;at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:786)<br />
&nbsp;at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:132)<br />
&nbsp;at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)<br />
&nbsp;at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)<br />
&nbsp;at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)<br />
&nbsp;at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:398)<br />
&nbsp;at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:455)<br />
&nbsp;at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)<br />
&nbsp;at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:225)<br />
&nbsp;at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:308)<br />
&nbsp;at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:79)<br />
&nbsp;at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3698)<br />
&nbsp;at org.apache.catalina.core.StandardContext.start(StandardContext.java:4349)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)<br />
&nbsp;at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)<br />
&nbsp;at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)<br />
&nbsp;at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)<br />
&nbsp;at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)<br />
&nbsp;at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)<br />
&nbsp;at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)<br />
&nbsp;at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)<br />
&nbsp;at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)<br />
&nbsp;at org.apache.catalina.core.StandardService.start(StandardService.java:480)<br />
&nbsp;at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)<br />
&nbsp;at org.apache.catalina.startup.Catalina.start(Catalina.java:556)<br />
&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />
&nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />
&nbsp;at java.lang.reflect.Method.invoke(Method.java:585)<br />
&nbsp;at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)<br />
&nbsp;at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)<br />
</span></p>
<p><br />
<span style="font-size: 10pt"><strong>错误原因： <br />
认为是由于jdk1.5 与 tomcat5.0之间的关于 TransformerFactoryImpl 类的冲突造成的。</strong><br />
<strong>tomcat-5.0.28\common\endorsed</strong>下有两个jar包：<strong>xercesImpl.jar</strong>和<strong>xml-apis.jar</strong>，其中的类<strong> javax.xml.transform.TransformerFactory</strong> 与jdk1.5中的类<strong>org.apache.xalan.processor.TransformerFactoryImpl</strong>其实是同一个类。<br />
in tomcat java is called with the following argument:<br />
-Djava.endorsed.dirs="X:\my_app\Portal\tomcat\common\endorsed"<br />
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".<br />
</span><span style="font-size: 10pt"><br />
</span><span style="font-size: 10pt"><strong>解决办法：<br />
</strong>1. 将<strong>xml-apis.jar</strong>移出<strong>endorsed</strong>文件夹。<br />
2. 用xalan系列jar包替换原来的<strong>xercesImpl.jar</strong>和<strong>xml-apis.jar</strong>。<br />
&nbsp;&nbsp; xalan系列jar包：<strong>serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar</strong>。<br />
3. For other application, just check this file or dom3-xml-apis.jar in your class path.<br />
</span><span style="font-size: 10pt"><br />
（以上参考<a href="http://www.blogjava.net/allen-zhe/"><u><font color="#000000">小立飞刀</font></u></a>的<a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.blogjava.net/allen-zhe/archive/2007/03/02/101373.html"><font color="#000000">TransformerFactoryImpl not found exception</font></a>一文，也谢谢作者解答这个难题）</span></p>
<p><span style="font-size: 10pt"><br />
<br />
&nbsp;</p>
</span>
<img src ="http://www.blogjava.net/wjywilliam/aggbug/196637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjywilliam/" target="_blank">wjywilliam</a> 2008-04-27 21:26 <a href="http://www.blogjava.net/wjywilliam/archive/2008/04/27/196637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>