ClassNotFoundException: org.hibernate.hql.ast.HqlToken的问题

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%

相关推荐