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

来源:互联网 发布:域名搜索引擎注册 编辑:程序博客网 时间:2024/04/29 19:09
MyEclipse 8.5开发JDK1.7和Struts 2冲突的问题真实原因及解决办法 
用Struts 2+Hibernate开发,遇到了 Struts 2+JDK1.7的冲突问题. 

以前在正式环境上发布系统的时候都是直接将tomcat进程杀掉然后重启,这样虽然能够保证不出问题,但是如果tomcat容器发布了多个系统就不行,应该这样会导致其他系统也停止,所以后来就通过tomcat后台管理来发布, 这样虽然能发布上去,但是启动不了,报如下错误: 
Java代码  收藏代码
  1. 严重: Exception starting filter struts2   
  2.   
  3. Caught exception while loading file struts-default.xml - [unknown location]   
  4.   
  5. at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839)   
  6.   
  7. at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)   
  8.   
  9. at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)   
  10.   
  11. at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)   
  12.   
  13. at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)   
  14.   
  15. at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)   
  16.   
  17. at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)   
  18.   
  19. at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)   
  20.   
  21. at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)   
  22.   
  23. at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)   
  24.   
  25. at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)   
  26.   
  27. at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3696)   
  28.   
  29. at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)   
  30.   
  31. at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3086)   
  32.   
  33. at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:912)   
  34.   
  35. at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:523)   
  36.   
  37. at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:113)   
  38.   
  39. at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)   
  40.   
  41. at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)   
  42.   
  43. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)   
  44.   
  45. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)   
  46.   
  47. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)   
  48.   
  49. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)   
  50.   
  51. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)   
  52.   
  53. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)   
  54.   
  55. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)   
  56.   
  57. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)   
  58.   
  59. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)   
  60.   
  61. at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)   
  62.   
  63. at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)   
  64.   
  65. at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)   
  66.   
  67. at java.lang.Thread.run(Thread.java:619)   
  68.   
  69. Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration   
  70.   
  71. at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)   
  72.   
  73. at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)   
  74.   
  75. at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)   
  76.   
  77. at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)   
  78.   
  79. at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.<init>(SAX2DOM.java:69)   
  80.   
  81. at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187)   
  82.   
  83. at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392)   
  84.   
  85. at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.setResult(TransformerHandlerImpl.java:137)   
  86.   
  87. at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.setup(DomHelper.java:213)   
  88.   
  89. at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:198)   
  90.   
  91. at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:189)   
  92.   
  93. at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:175)   
  94.   
  95. at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)   
  96.   
  97. at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)   
  98.   
  99. ... 31 more   
  100.   
  101. 2008-9-19 0:08:34 org.apache.catalina.core.StandardContext start   


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

那基本可断定是其他jar包有冲突, 应该是XML解析包有冲突. 

检查发布后的WEB-INF/lib有两个XML解析包: xml-apis.jar和xerces-2.6.2.jar 

这种错误真正原因不是JDK 1.7和Struts 2冲突, 而是 MyEclipse Hibernate 类库中多了包: xerces-2.6.2.jar, 这个包的功能和JDK的冲突了. 解决办法: 1. 删除发布后目录的 WEB-INF/lib/ 下的这个文件; 2. 或者使用JDK 1.7来启动Tomcat 6. 

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