天天看点

【原创】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.(未尝试)