坑爹啊,弄了一下午,以爲是代碼問題呢!在網上搜了之後原來是這個原因,記下來以備後用!
我用的myeclipse8.6, E:\Program Files (x86)\MyEclipse 8.6,
SSH組合完成後,執行hibernate的HQL查詢時,報錯:
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
看來是antlr這個語法解析包出錯,
關閉myeclipse8.6
因爲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自帶的,,所以刪除比較麻煩,,我覺得最簡單的做法應該是這樣:
E:\Program Files (x86)\MyEclipse 8.6\configuration\org.eclipse.osgi\bundles 下搜索antlr-2.7.2.jar
完成後能看到的,都刪除掉,,(可能有些是在1.3下面的,有些是在2.1下面的)
然後在 E:\Program Files (x86)\MyEclipse 8.6\Common\plugins 搜索 *struts*.jar 會發現,如果沒有該文件夾在C:\Users\Administrator\AppData\Local\Genuitec\Common找。出來三個
選中 其中的文件,打開方式選擇壓縮包,用winRAR的打開
com.genuitec.eclipse.cross.easystruts.eclipse_8.6.0.me201007231647.jar 在lib下和data\1.3下要刪除antlr-2.7.2.jar(這個是刪除1.3裏面的)
而再打開 com.genuitec.eclipse.struts2_8.6.0.me201007292038.jar data\2.1\core 下刪除antlr-2.7.2.jar (這個是2.1裏面的)
好了,,這個就從struts1.3和2.1中移除了,,因爲這兩個jar是common目錄下的,所以刪除了後,
再運行myeclipse後,重新部署就可以了!