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

来源:互联网 发布:手机网站建站之星源码 编辑:程序博客网 时间:2024/06/06 03:32

原有工程里面都是使用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%

 

以上仅供参考!

 

0 0