Java民工的鐵皮房

          Consciousness Of Programming - wjywilliam 想飛,總是會(huì)飛的......
          posts - 8, comments - 14, trackbacks - 0, articles - 9
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          場(chǎng)景:運(yùn)行運(yùn)用了Struts2.0 framework的項(xiàng)目時(shí)發(fā)生的錯(cuò)誤。

          環(huán)境:sun jdk1.5.0_15 + tomcat 5.0.28


          原本以為自己玩了eclipse和myeclipse這么多年,一向項(xiàng)目的配置發(fā)布用myeclipse雖然沒(méi)有駕輕就熟,但是至少不會(huì)被難道,這次確倒在了這個(gè)jdk 1.5及tomcat 5.0.28的環(huán)境上。誰(shuí)叫以前一直沒(méi)有試過(guò)在tomcat5.0.28上發(fā)布struts2呢,剛好現(xiàn)在客戶(hù)說(shuō)一定要用struts2,剛好自己也想償償新,卻償?shù)搅诉@個(gè)苦頭。開(kāi)始還以為是自己用myelipse deploy的問(wèn)題,結(jié)果卻不是,為啥別人的tomcat5.5就能好好的run呢?廢話(huà)不少說(shuō),現(xiàn)在就看以下exception:

          完整的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)


          錯(cuò)誤原因:
          認(rèn)為是由于jdk1.5 與 tomcat5.0之間的關(guān)于 TransformerFactoryImpl 類(lèi)的沖突造成的。

          tomcat-5.0.28\common\endorsed下有兩個(gè)jar包:xercesImpl.jarxml-apis.jar,其中的類(lèi) javax.xml.transform.TransformerFactory 與jdk1.5中的類(lèi)org.apache.xalan.processor.TransformerFactoryImpl其實(shí)是同一個(gè)類(lèi)。
          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包替換原來(lái)的xercesImpl.jarxml-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.

          (以上參考小立飛刀TransformerFactoryImpl not found exception一文,也謝謝作者解答這個(gè)難題)



           


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 吉木乃县| 湟源县| 个旧市| 宁武县| 新兴县| 福州市| 肇庆市| 绥阳县| 浮山县| 耿马| 沈阳市| 泾阳县| 荔浦县| 庄河市| 西吉县| 滕州市| 集安市| 张家界市| 凌云县| 乌鲁木齐市| 伊通| 东阿县| 玛曲县| 农安县| 临邑县| 府谷县| 中阳县| 鸡东县| 台南市| 故城县| 来安县| 越西县| 临高县| 定结县| 余庆县| 云阳县| 即墨市| 建平县| 拉孜县| 平远县| 泰来县|