MyEclipse8.5中整合Struts2+Spring+Hibernate后会出现一个常见的错误,每次整合都会遇到这个问题,今天又遇到了,居然又google了半天才解决:
java.lang.reflect.InvocationTargetException.......
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I上面是报错信息的一部分,主要问题是:
Struts自带的antlr-2.7.2.jar比Hibernate带的antlr-2.7.6.jar版本要低,所以要删除低版本的。
删除方法就是在MyEclipse的Window->Preference然后搜索Struts2,删除antlr-2.7.2.jar即可,如下图:
然后删除tomcat发布目录WEB-INF/lib下的antlr-2.7.2.jar,就可以正常运行了。当然如果将tomcat发布目录下的整个工程删掉,重新部署也是可以的。
经确认,虽然在刚刚的操作中删除了Struts2自带的antlr-2.7.2.jar,但是我发现antlr-2.7.2.jar还是存在于MyEclipse的安装目录下的:MyEclipse8.5\configuration\org.eclipse.osgi\bundles\105\1\.cp\data\2.1\core
所以这个删除仅仅是从当前配置中删除,以后如果想把antlr-2.7.2.jar加回来,用同样的方法就可以加回来了。