SSH的一个异常,实在是找不到原因了。。。
我这小功能就是从用户表里查查有没有对应的用户,弄个登录的功能。我用spring提供的这个模板写了一个回调,大家看看有没有写错:
Java code
public TbUser selectUser(final TbUser userInfo) {
return getHibernateTemplate().execute(new HibernateCallback<TbUser>() {
@Override
public TbUser doInHibernate(Session arg0)
throws HibernateException, SQLException {
return (TbUser) arg0
.createQuery("from TbUser where name=? and password=?")
.setString(0, userInfo.getName())
.setString(1, userInfo.getPassword()).uniqueResult();
}
});
}
我用junit对dao、service、action都分别进行了测试,都没有问题,但是一旦我将项目部署到tomcat后,用浏览器测试登录这个功能时就会出现下面这些异常,超过发帖的字数限制了,请看1楼。。
------解决方案--------------------java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
第一种写法,参数配置型,Hibernate需要借助antlr的包,你看看工程中是否引入了。
------解决方案--------------------在执行语句中,有参数,是要带引号的,不然的确会报错哦
------解决方案--------------------
antlr这个语法解析包出错
因为Struts自带的antlr-2.7.2.jar,比Hibernate3.3自带的antlr-2.7.6.jar的版本要低,
故要删除前一个低版本的
------解决方案--------------------Eclipse里面很简单吧。。。Build里面配置下就完毕了。
如果是部署环境的话,WEB-INF里面去掉那个低版本的好了。
最无耻的一招就是把高版本的加入系统CLASSPATH