在Struts 2+Hibernate開發遇到了Struts2+JDK 6的衝突問題,具體信息以下:web
出錯信息: Illegal access: this web application instance has been stopped already. Could not load org.xml.sax.SAXException. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.api
現象: 第一次能運行, reload就不行. 啓動不行.app
解決思路: 排除法.工具
先試了Struts2自帶的blank包, 沒問題.開發工具
那基本可判定是其餘jar包有衝突, 應該是XML解析包有衝突.網站
檢查發佈後的WEB-INF/lib有兩個XML解析包: xml-apis.jar和xerces-2.6.2.jarui
這種錯誤真正緣由不是JDK 6和Struts 2衝突, 而是 MyEclipse Hibernate 類庫中多了兩個或者使用JDK 1.5來啓動Tomcat 6.this
方案1的詳細操做步驟:debug
a. 先把MyEclipse Hibernate 3.2 Core Lib從BuildPath去掉;xml
b. 不要從新發布應用, 從發佈後的目錄複製所有的jar文件到開發工具下項目的WEB-INF\lib目錄下, 不要複製其中的xml-apis.jar和xerces-2.6.2.jar.
c. 中止Tomcat, 從新發布應用或者刪除發佈後的目錄下的WEB-INF\lib下的xml-apis.jar和xerces-2.6.2.jar.
小提示: MyEclipse 自帶類庫有不少問題, 建議讀者自行下載官方網站jar包進行開發, 比較保險.