日期:2014-05-20  浏览次数:20861 次

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