由於是用myeclipse自己導的包,出現了包版本衝突問題,問題出在struts包裏面有也有個antlr_XXX.jar,與hibernate包裏面的衝突了,hibernate的版本高
SSH組合完成後,執行hibernate的HQL查詢時,報錯:
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
看來是antlr這個語法解析包出錯
因爲Struts自帶的antlr-2.7.2.jar,比Hibernate3.3自帶的antlr-2.7.6.jar的版本要低,故要刪除前一個低版本的,struts1.3 和2.1都帶有antlr-2.7.2.jar,要把版本低的清除掉。
由於myeclipse 添加的struts性能 不是放在工程lib下的,而是myeclipse自帶的,所以刪除比較麻煩。
我是直接到workspace中查找下antlr-2.7.2.jar的包,刪除之,之後編譯時就會自動找到Hibernate3.3自帶的antlr-2.7.6.jar。
樓下回複方法:
刪了之後又出現了,又找到了一個新辦法
具體方法:
在MyEclipse下,windows-->preferences-->在文本框中搜索struts2-->選擇antlr2.7.2-->remove
在tomcat該應用的目錄WEB-INF\lib 刪除 antlr2.7.2.jar
問題解決,感謝博主