hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
环境:
weblogic10.3.5,hibernate3,GGTS(groovy/grails tools suite);
出现这问题是因为该项目是从weblogic8.1.6下移植到weblogic10.3.5;其中在tomcat中调用过;
上网百度一把:说是hibernate.query.factory_class改成这个org.hibernate.hql.classic.ClassicQueryTranslatorFactory就没有这个问题;发布到weblogic了没有问题;
但是多选删除功能无法使用;于是又百度一把:(参考这个文档http://wangzhen-1104.iteye.com/blog/221444)原因如下:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,通过配置hibernate.query.factory_class属性:当设置为org.hibernate.hql.ast.ASTQueryTranslatorFactory 选择Hibernate3.0的查询翻译器,可以使用批量更新和删除功能;而设置为org.hibernate.hql.classic.ClassicQueryTranslatorFactory 选择Hibernate2.x的查询翻译器时,不能批量更新和删除;
但是我代码的功能多数使用到了批量删除和更新,所以不可能去更改代码;只能选择3.0;
再继续看:“在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antlr类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。”这个项目原来是weblogic8.1.6,我查看原来的代码里,是一个weblogic.jar的,打开这个jar中,里边是antlr类库的,weblogic8.1.6的weblogic.jar也有;项目中没有antlr-2.7.7.jar所以在原来的项目中,如果放在tomcat下,有weblogic.jar的支持,使用hibernate3是没有问题的,放到weblogic8.1.6也不会有问题,因为8.1.6的weblogic.jar中也包含了antlr的相关类库;
于是我想过几个办法:(不就是没有antlr相关类库嘛)
1、直接把weblogic10.3.5的weblogic.jar直接换个8.1.6的,不成功就不说了,只能说明是个初级猿(直接说版本不对);
2、在项目中加入antlr-2.7.7.jar然后去掉含有antlr类库的weblogic.jar,也不行;(说明这个antlr是在weblogic启动时就需要加载的,而不是部署项目的时候)
因为weblogic10.3.5中没有antlr类库,所以参考文档中的第二种方法不符合我的实际情况;所以也没有参考第三情况;
百度无果,果断google之,很快http://xuejiangtao.iteye.com/blog/1195897映入我的眼帘;weblogic版本相同,果断试之,方法和前边一遍文章的最后一种方法一致,大家都这么说,我只能相信了;
3、将工程里的antlr-2.7.7.jar拷贝到weblogic的wlserver_10.3.5\server\lib文件夹下面,在domains\base_domain\bin里找到startWebLogic.cmd(注意不是domains\base_domain\里的startWeblogic.cmd这个只是调用bin下边那个startWeblogic.cmd的)文件,在set classpath 的上下分别增加了两句话,如下:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6rc1.jar
set CLASSPATH=%SAVE_CLASSPATH%
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH% ;
linux下startWeblogic.sh:
PRE_CLASSPATH="${WL_HOME}/server/lib/antlr-2.7.7.jar"<注意是'/',不是'\'>
CLASSPATH="${SAVE_CLASSPATH}"
CLASSPATH="${PRE_CLASSPATH}:${CLASSPATH}"
重新启动weblogic就没有问题了;因为我用的是ggts,直接使用上述方法修改之后,就可以在在IDE中起动了;
总结几点:
1、如果hibernate3的项目是从weblogic8.1.6项目移植到10.3.5的话,需要的只是加入antlr类库到weblogic的启动中去;这weblogic的区别可能就是有些类库需要在容器启动就加载,而tomcat相对这样的情况少些(tomcat也有启动加载一些配置);2、weblogic8.1.6到10.3.5从weblogic.jar中去掉了antlr部分,应该也是其变的更加活用,独立和加强适应性的一种体现吧,这些思想也是值得学习的;
3、“版本”果然能引起很多问题;
PS:::::::::::::::::::::::::::::::::::::::::::::如果哪里不对的地方,还请不吝指出:::::::::::::::::::::::::::::::::::::::::::::::::::
hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken的更多相关文章
- weblogic 下异常 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
项目之前在 Tomcat 环境下一直都正常运行,今天应客户要求需要迁移到 webLogic 10.3.6 下, 部署后竟然抛出了 org.hibernate.QueryException: Class ...
- weblogic中部署项目报错org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken .
原因: 原因是weblogic要查找自己的antlr,和lib下面的antlr包冲突.... 解决方法: 在weblogic.xml添加 <container-descriptor> ...
- weblogic10异常:org.hibernate.hql.ast.HqlToken
转自:http://www.programgo.com/article/68682994452/ 在做查询的时候,报出 org.hibernate.QueryException: ClassNotF ...
- 解决Eclipse编译器报错ClassNotFoundException:Org.hibernate.hql.ast.HqlToken
最近开发遇到Eclipse编译器老是报出ClassNotFoundException:Org.hibernate.hql.ast.HqlToken [from User Where id=1] 的错误 ...
- WebLogic发布S2SH应用时提示ClassNotFoundException: org.hibernate.hql.ast.HqlToken异常
使用Spring+hibernate如下 <properties> <!--定义方言.fetch深度.是否显示sql--> <property name="hi ...
- java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode \-[M ...
- SSH执行hql报错:Caused by: org.hibernate.hql.ast.QuerySyntaxException: user is not mapped [from user where username = ?]
报错信息: ERROR Dispatcher:38 - Exception occurred during processing request: user is not mapped [from u ...
- org.hibernate.hql.ast.QuerySyntaxException: Student is not mapped [from Student as stu where stu.sclass=?]
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: t_aty_disease is not ...
- org.hibernate.hql.ast.QuerySyntaxException: tb_voteoption is not mapped [from tb_voteoption where voteID=?]
转自:https://www.cnblogs.com/albert1017/archive/2012/08/25/2656873.html org.hibernate.hql.ast.QuerySyn ...
随机推荐
- 【BZOJ1477】青蛙的约会(拓展欧几里得)
[BZOJ1477]青蛙的约会(拓展欧几里得) 题面 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为 ...
- 【CJOJ1372】【洛谷2730】【USACO 3.2.5】魔板
题面 Description 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色 ...
- TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html 总结 在控制器中 模型操作 get() 和 all() 只能单独使用来查询数据 想要链式操作查询数据 需要使用f ...
- eclipse 中启动Tomcat超时了错误
修改E:\eclipse\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\servers.xml 将 start-ti ...
- (python走过的坑)OpenCV中错误opencv-3.3.1\modules\highgui\src\window.cpp:339: error: (-215) size.width>0 && size.height>0 in function cv::imshow
第一次在python中使用OpenCV(cv2),运行时报错opencv-3.3.1\modules\highgui\src\window.cpp:339: error: (-215) size.wi ...
- QT 5.9版本 使用MSVC2015编译时出现中文字符乱码问题的解决方法
解决方法主要分为两种: 1.在项目->Project Settings ->编辑器 ->文件编码中使用System 2.对于中文字符,使用QString::fromLocal8Bit ...
- maven导入多模块项目
maven导入多模块项目 一.SVN上Maven多模块项目结构 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二.eclipse通过SVN导入到工作空间 ...
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
其实网上有很多解决方法,但是我试过都没有用. 我出现这个错误的原因是因为我的Editplus是以管理员的方式运行的,所以解决的办法有两种: 一.修改Editplus的兼容性,方法如下: 首先在Edit ...
- Selenium学习资源和网站
用于收集常用的网站和学习资源: 文章: Selenium私房菜系列--总章 WEB 自动化测试工具 Selenium 简介及其应用 Selenium教程 和我一起学 Selenium WebDrive ...
- 为什么需要RPC,而不是简单的HTTP接口
转载自:http://www.oschina.net/question/271044_2155059?sort=default&p=1#answers 目前有很多Java的RPC框架,有基于J ...