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

今天遇到一个莫民奇妙的问题,拥有Hibernate3.jar的应用,被部署到weblogic8.1上后,抛出异常 CharScanner; panic: ClassNotFoundException: org.hibernate.hql.ast.HqlToken。
解决方法:在hibernate.properties上,或是在spring的conext xml中,加上一个属性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 :
在set CLASSPATH之前加上下面一句:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
在set CLASSPATH之后加上下面一句:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%


set PRE_CLASSPATH=%DOMAIN_HOME%\lib\antlr-2.7.6.jar

@REM Start Derby

set DERBY_DEBUG_LEVEL=0

if "%DERBY_FLAG%"=="true" (
call "%WL_HOME%\common\derby\bin\startNetworkServer.cmd"  >"%DOMAIN_HOME%\derby.log" 2>&1

)

set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%

set SAVE_JAVA_OPTIONS=

set CLASSPATH=%SAVE_CLASSPATH%


set CLASSPATH=%PRE_CLASSPATH%;%SAVE_CLASSPATH%

你可能感兴趣的:(ClassNotFoundException: org.hibernate.hql.ast.HqlToken的问题)