坑爹啊,弄了一下午,以为是代码问题呢!在网上搜了之后原来是这个原因,记下来以备后用!
我用的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后,重新部署就可以了!