ASTQueryTranslatorFactory weblogic10.3
org.hibernate.hql.ast.HqlToken报错问题
【LINUX机器】测试环境机器坏了,需要重新搭建一套测试环境。
搭建完成,发布完应用后,点击某些页面的时候,会出现
org.hibernate.hql.ast.HqlToken,网上查了下说是weblogic的jar包和应用里面的jar包冲突了。
weblogic用的jar包是【
com.bea.core.antlr_2.7.7.jar和
com.bea.core.antlr.runtime_2.7.7.jar】
web应用里面使用的jar包是【antlr_2.7.6.jar】
spring 里面配置的sessionfactory的属性如下
<!-- hibernate 查询语言为3.X版本 -->
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
<!-- hibernate 查询语言为2.X版本 -->
<!--<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>-->
网上查了下有下面几种解决方法:
1.需要把weblogic安装目录下的modules目录下的
com.bea.core.antlr_2.7.7.jar和
com.bea.core.antlr.runtime_2.7.7.jar,两个包删除,但是把这两个包删除后,weblogic启动不起来了,失败。
2.只删除
com.bea.core.antlr_2.7.7.jar包,留着
com.bea.core.antlr.runtime_2.7.7.jar包,把应用里面的antlr_2.7.6.jar,复制到modules目录下,修改了
user_projects/domain/base_domain/bin/startWeblogic.sh文件中将原来的
CLASSPATH="${SAVE_CLASSPATH}"
SAVE_CLASSPATH=""
修改为下面的
PRE_CLASSPATH=""~/web/WEB-INFO/lib/antlr_2.7.6.jar"",
CLASSPATH="${SAVE_CLASSPATH}"
CLASSPATH="${PRE_CLASSPATH}:${CLASSPATH}"
SAVE_CLASSPATH=""
重启weblogic还是不行。
3.删除
com.bea.core.antlr_2.7.7.jar包,留着
com.bea.core.antlr.runtime_2.7.7.jar包,把应用里面的antlr_2.7.6.jar,复制到modules目录下修改了第2部中的startWeblogic.sh文件后【具体这个需不需要修改startWeblogic.sh还没有测试,可以先只修改一下setDomainEnv.sh这个文件先试下】, 又继续把setDomainEnv.sh文件也修改了以下,具体修改如下
在文件的大约第66行注释的下面,添加
PRE_CLASSPATH="~/web/WEB-INFO/lib/antlr_2.7.6.jar"
export PRE_CLASSPATH
重启服务,问题解决。
仅供参考,这个问题搞了3天没弄好,早上再查的时候终于碰到合适的解决办法了,赞