最近的项目使用MyEclipse开发,Web应用服务器由Tomcat6转换为使用weblogic10环境。
WebLogic10安装,配置好用户domain。
启动测试web应用服务没有问题,在部署好实际项目后,启动报错,错误信息为
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
找到解决方法,将工程里的antlr.jar拷贝到weblogic的wlserver/server/lib文件夹下面,在domains\base_domain\bin里找到startWebLogic.cmd文件,找到
set CLASSPATH=%SAVE_CLASSPATH%
在下面增加:
@REM hibernate3 set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6.jar set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
在启动weblogic服务,服务正常启动,错误被排除。
网上许多在hibernate.properties中增加:
hibernate.query.factory_class属性为org.hibernate.hql.classic.ClassicQueryTranslatorFactory
方法,在执行普通的hql查询没有问题,但无法执行hql批量更新语句。
在配置完成后,从myelicpse中启动weblogic服务,仍然报出
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
错误,显然修改未被myeclipse识别,启动不是从cmd脚本装载执行,为eclipse行为。
解决方法:
widows->preferences->MyEclipse->Services->WebLogic->WebLogic10.x->Path
在Prepend to classpath中,增加选项:
antlr.jar
具体设置与antlr.jar的文件路径相关,即默认此jar的优先级高于weblogic自身的实现jar。
在此启动,从eclipse启动,正常。