SSH框架项目出现java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误的解决方案

作者: 大海 分类: 编程 发布时间: 2013-05-20 05:00 ė14,616 views 62条评论

今晚再做一个SSH的项目时遇到了一个错误java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I

而且错误还特别奇怪

开始是这样的查询代码,没有任何的问题

request.setAttribute(“countrylist”, countryService.getResult(“from Country”, null));

但是当继续编写,代码成了这样时

request.setAttribute(“provincelist”, provinceService.getResult(“from Province where country.id=?”,new Object[]{new Integer(1)}));

就会出现上面的错误,深感不解,所有的类的结构都是写的一模一样的.为何第一种代码不会报错,而第二种代码就会报错呢?先看看这两个查询语句唯一的差别就再与第一个是不带条件的查询,第二个是在执行时再出入查询条件.

好吧我把代码改成这样看看

request.setAttribute(“provincelist”, provinceService.getResult(“from Province where country.id=1”,null));

竟然没错了,课程成功查询数据了.真是倍感困惑,debug调试,看看是不是自己在传递参数parameters时出错

	public List getResult(String hql, Object[] parameters) {
		Query query = sessionFactory.getCurrentSession().createQuery(hql);
		if(parameters != null && parameters.length > 0){
			for (int i = 0; i < parameters.length; i++) {
				query.setParameter(i, parameters[i]);
			}
		}
		return query.list();
	}

经过调试发现完全正确.能成功拼接出正确的查询语句.这就更让人恼火了.

最终还是搜索引擎帮了忙啊,最终确定问题是

image

Struts的antlr-2.7.2.jar与Hibernate3的antlr-2.7.6.jar存在jar包冲突问题,好吧删掉低版本的jar包.

最好将项目移除后再重新部署,我用了了”Redeploy/Reload application”

image

是失败了.

 

最让人不解的事情还没有结束,我就不信这个邪了.我非要再把那个低版本的jar导入试试.事实证明我真的见鬼了.再导入antlr-2.7.2.jar包后竟然没错误了.我不得不承认我的人品已经相当低了.不过为了保险起见,各位还是不要保留两个jar包了.说不定那天报个错就够你调试半天的.

事实再次证明预感是对了的。第二天又出现相同的错误了。看来myeclipse是有bug的,这次是坚决不能留了。删除了吧。

本文出自 纳百川,转载时请注明出处及相应链接。

本文永久链接: https://www.bicner.com/104.html

2 Comments

  1. li2235678 2013/05/20 at 14:03

    来支持下了。。。。。

    1. 大海 2013/05/20 at 22:08

      非常欢迎啊

Ɣ回顶部