Caught exception while loading file struts-default.xml 的错误

MyEclipse 6开发JDK6和Struts 2冲突的问题真实原因及解决办法
用Struts 2+Hibernate开发. 再次遇到了 Struts 2+JDK 6的冲突问题.

以前在正式环境上发布系统的时候都是直接将tomcat进程杀掉然后重启,这样虽然能够保证不出问题,但是如果tomcat容器发布了多个系统就不行,应该这样会导致其他系统也停止,所以后来就通过tomcat后台管理来发布, 这样虽然能发布上去,但是启动不了,报如下错误:
严重: 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:201) 

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.<init>(ApplicationFilterConfig.java:108) 

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

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

at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3086) 

at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:912) 

at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:523) 

at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:113) 

at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) 

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852) 

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584) 

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 

at java.lang.Thread.run(Thread.java:619) 

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.<init>(Unknown Source) 

at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source) 

at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source) 

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

at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.<init>(SAX2DOM.java:69) 

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.<init>(DomHelper.java:198) 

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

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

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

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

... 31 more 

2008-9-19 0:08:34 org.apache.catalina.core.StandardContext start 


第一次启动能运行, 在http://localhost:8080/manager/html中reload或start就不行.

那基本可断定是其他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/ 下的这两个文件; 2. 或者使用JDK 1.5来启动Tomcat 6.

解决办法
1>删除发布后的目录下的WEB-INF\lib下的xml-apis.jar和xerces-2.6.2.jar.
2>停止Tomcat,重新启动就可以,不需要再次发布

你可能感兴趣的:(java,apache,tomcat,xml,struts)