weblogic10.3 org.hibernate.hql.ast.HqlToken报错问题
文章分类:Java编程
?
因客户需求,将原来在tomcat 6的 struts2+hibernate3+spring2.5下的应用移植到weblogic10.3上, 在运行
weblogic10.3时发现 ,原来在tomcat6运行妥妥的应用不好用了,在开发工具中发现抛异常:
org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException:
org.hibernate.hql.ast.HqlToken
?? ? ? ?由是在网上开始海找试过好多也走了不少弯路,终于解决了。
?
我的解决方法是 :
问题就是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)就可以了。
?
因每个人的问题和使用的版本不同解决方法也有所不同,所以把网上其它解决方法也整理出来了,供大家参考。
解决方法一 : 如果你使用的是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>两者区别网上好多谷歌一下。
解决方法二 : 设置在“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%
?
以上仅供参考!
?