天天看點

【原創】tomcat頁面報404錯誤及解決辦法

今天上午巡檢時tomcat 還是正常的能通路,但是過會頁面直接報404錯誤,直接重新開機tomcat後通路頁面繼續是404錯誤,啟動的過程中仍然報錯,資訊如下:

嚴重: Exception starting filter struts2

Caught exception while loading file struts-default.xml - [unknown location]

        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839)

        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)

        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:395)

        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)

        at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:205)

        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)

        at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)

        at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:108)

        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)

        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)

        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)

        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)

        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)

        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:987)

        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:909)

        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:495)

        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)

        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)

        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

        at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)

        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

        at org.apache.catalina.core.StandardService.start(StandardService.java:516)

        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:583)

        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:597)

        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration

        at org.apache.xerces.parsers.DOMParser.(Unknown Source)

        at org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source)

        at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)

        at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.createDocument(SAX2DOM.java:326)

        at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.(SAX2DOM.java:85)

        at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187)

        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392)

        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.setResult(TransformerHandlerImpl.java:137)

        at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.setup(DomHelper.java:213)

        at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.(DomHelper.java:198)

        at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.(DomHelper.java:189)

        at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.(DomHelper.java:175)

        at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)

        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)

        ... 34 more

2012-3-16 9:41:18 org.apache.catalina.core.StandardContext start

嚴重: Error filterStart

嚴重: Context [/service] startup failed due to previous errors

2012-3-16 9:41:18 org.apache.catalina.core.ApplicationContext log

資訊: Closing Spring root WebApplicationContext

2012-3-16 9:41:18 org.apache.coyote.http11.Http11Protocol start

資訊: Starting Coyote HTTP/1.1 on http-80

2012-3-16 9:41:19 org.apache.jk.common.ChannelSocket init

資訊: JK: ajp13 listening on /0.0.0.0:8009

2012-3-16 9:41:19 org.apache.jk.server.JkMain start

資訊: Jk running ID=0 time=0/24  config=null

2012-3-16 9:41:19 org.apache.catalina.startup.Catalina start

資訊: Server startup in 35855 ms

網上查資料說是jar包有沖突, 應該是XML解析包有沖突. 檢查釋出後的WEB-INF/lib有兩個XML解析包: xml-apis.jar和xerces-2.6.2.jar 這種錯誤真正原因不是JDK 6和Struts 2沖突, 而是 MyEclipse Hibernate 類庫中多了兩個包: xml-apis.jar和xerces-2.6.2.jar, 這兩個包的功能和JDK的沖突了.

解決辦法:

1. 将釋出後目錄的WEB-INF/lib/下的xml-apis.jar和xerces-2.6.2.jar這兩個的這兩個檔案重命名一下即可!(這是我嘗試的是方法)

2. 我的tomcat是1.6版本,或者使用JDK 1.5來啟動Tomcat 6.(未嘗試)