web工程,将其部署在glassfish中,工程启动时,提示org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken 
出现这种问题的一般原因为缺少antlr jar包或者是jar版本有冲突。
但web工程的web-inf\lib下有该jar包,于是将该jar包复制一份放到glassfish的server\lib下,重启工程,成功,在浏览器中也能正常显示登录页面,但通过输入用户名和密码登录时,又提示org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误,感觉glassfish没有正常加载web-inf\lib下的jar包。
ps:该现象也出现在weblogic中,但通过在工程web-inf下添加weblogic.xml配置文件,将prefer-web-inf-classes的值设为true,也能解决问题,但glassfish中貌似没有这种配置请问哪位高手可以解答一下,谢谢。GlassFishjava

解决方案 »

  1.   

    weblogic出现这种错误的原因是:服务器默认的lib下包含了antlr包里的类,但是weblogic里面的版本比较低,所以加个配置文件让它优先加载webapp下的libglassfish解决方法应该也很简单,你去把服务器里面的和antlr冲突的那个Jar包删了就是,weblogic也可以用这种方法解决。
      

  2.   

    但glassfish中没有antlr相关的jar包