正在做一个Struts1.3加Hibernate的登录功能,用到以下的查询
String hql = "from User as user where user.name=:n and user.password=:p";
Query query = session.createQuery(hql);
query.setString("n", name);
query.setString("p", passwod);//name 和 password都已经正确传入调式发现每次执行到 Query query = session.createQuery(hql);就会抛出以下异常:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:895)
org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4764)
org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1373)
         ................我尝试把以上语句放在main函数里面执行(不通过页面传参),是可以正确查询的。
上网查说是包冲突的问题,但我已经是使用导入MyEclipse自带的包的了。
还是Struts和Hibernate里面某些JAR包有冲突吗?请教大家了

解决方案 »

  1.   

    我不知道..我是来告诉你到lib目录下一个一个检查包..
      

  2.   

    花了两个小时,我终于弄明白怎么回事了,总结一下
    在hibernate中有一个这样的包:antlr-2.7.6.jar
    在struts1.3中有一个这样的包:antlr-2.7.2.jar
    如果像我那样不管三七二十一把全部包都导进的话,就会出这样的问题。所以我估计,在本地查询由于不需要用到struts部分,所以就不会出问题了。
    暂时发现只有使用HQL查询才会出问题,QBC或SQL查都不会出问题,大家以后导入包的话都留意一下吧。谢谢了~