crazzylp 2014-01-08
今天遇到一个莫民奇妙的问题,拥有Hibernate3.jar的应用,被部署到weblogic8.1上后,抛出异常CharScanner;panic:ClassNotFoundException:org.hibernate.hql.ast.HqlToken。
解决方法:在hibernate.properties上,或是在spring的conextxml中,加上一个属性hibernate.query.factory_class,值为org.hibernate.hql.classic.ClassicQueryTranslatorFactory。
原因:从网上获知,weblogic.jar中已经有了一个antlr.jar的版本,导致应用中hibernate3.jar中用到的antlr.jar不能找到,导致异常。
1、拷贝Hibernate3里带的包antlr-2.7.5H3.jar到%DOMAIN_HOME%\server\lib下
2、修改...\Middleware\user_projects\startWebLogic.cmd:
在setCLASSPATH之前加上下面一句:
setPRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
在setCLASSPATH之后加上下面一句:
setCLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
setPRE_CLASSPATH=%DOMAIN_HOME%\lib\antlr-2.7.6.jar
@REMStartDerby
setDERBY_DEBUG_LEVEL=0
if"%DERBY_FLAG%"=="true"(
call"%WL_HOME%\common\derby\bin\startNetworkServer.cmd">"%DOMAIN_HOME%\derby.log"2>&1
)
setJAVA_OPTIONS=%SAVE_JAVA_OPTIONS%
setSAVE_JAVA_OPTIONS=
setCLASSPATH=%SAVE_CLASSPATH%
setCLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。