转 weblogic10.3 org.hibernate.hql.ast.HqlToken报错问题
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%
?
以上仅供参考!
?