ASTQueryTranslatorFactory weblogic10.3 org.hibernate.hql.ast.HqlToken报错问题

  • Post author:
  • Post category:其他


原有工程里面都是使用sql 然后从session获取连接来进行修改和删除操作,但是使用了hibernate二级缓存,使用sql,二级缓存查询的数据不能实时变更,然后改成hql语句来操作,会报错,

然后修改



<!– 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>–>

修改完成之后需要导入antlr-2.7.6.jar ,但是启动报错,


org.springframework.orm.hibernate3.HibernateQueryException:


ClassNotFoundException:


org.hibernate.hql.ast.HqlToken


由是在网上开始海找试过好多也走了不少弯路,终于解决了。



我的解决方法是


:(windows环境下好使,linux环境下删除这两个包起不来)



问题就是jar包冲突hibernate3需要antlr-2.7.6.jar的支持,而在weblogic10.3我的安装目录



“D:\bea\modules”下有两个jar和工程里的jar(antlr-2.7.6.jar)包冲突将weblogic10.3中jar包删除



(com.bea.core.antlr_2.7.7.jar、com.bea.core.antlr.runtime_2.7.7.jar)就可以了。







aix AIX TESTKF 1 7 00CE0CAF4C00 和linux下不行,



下删除了两个包之后报异常,不能启动,最后测试使用方法



/home/eteller/base_domain/bin/ 目录下面 修改

setDomainEnv.sh






增加





PRE_CLASSPATH=”/home/eteller/app/ETeller/WEB-INF/lib/antlr-2.7.6.jar”

export PRE_CLASSPATH












重启服务后解决,


因每个人的问题和使用的版本不同解决方法也有所不同,所以把网上其它解决方法也整理出来了,供大家参考。



解决方法一

:(需要使用3这种解析器,所以不能使用)


如果你使用的是hibernate没用spring那你需要在hibernate.properties中设置否则在spring中设置hibernate查询翻译器属性<prop key=”hibernate.query.factory_class”>org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop><prop key=”hibernate.query.factory_class”>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>两者区别网上好多谷歌一下。







解决方法二

:(weblogic 10.3无效)


设置在“D:\bea\wlserver_10.3\server\lib\consoleapp\webapp\WEB-INF”下的weblogic.xml文件weblogic8.0解决这个问题是改更weblogic.xml把一个属性更为true<container-descriptor>…<prefer-web-inf-classes>true</prefer-web-inf-classes>… </container-descriptor>











解决方法三

:(尝试了无效)


设置我的目录“D:\bea\wlserver_10.3\server\lib”放入antlr-2.7.6.jar且在weblogic.jar前面设置我的目录“D:\bea\user_projects\domains\base_domain\bin”下


setDomainEnv.cmd或startWebLogic.cmd文件

打开

找到set CLASSPATH

上面加


set PRE_CLASSPATH=% DOMAIN_HOME%\lib\antlr-2.7.6.jar;



下而加

set CLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%ATH%




以上仅供参考!



版权声明:本文为xiaxiaorui2003原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。