我的项目是使用:weblgoic9.2+hibernate3.2开发的,开发结束后,和我说要把WebLogic换成WebLogic10.3,安装好后
抛了这样一个错误,到网上去查说是:在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。
出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。
抛出的错误:
org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundExcepti
on: org.hibernate.hql.ast.HqlToken [SELECT ztId,ztCname FROM AzyZtEntity WHERE z
tEflg=0]; nested exception is org.hibernate.QueryException: ClassNotFoundExcepti
on: org.hibernate.hql.ast.HqlToken [SELECT ztId,ztCname FROM AzyZtEntity WHERE z
tEflg=0]

解决方案 »

  1.   

    1.是在hibernate.properties文件中增加属性:hibernate.query.factory_class,                                 属性的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactory,这样就可以解决问题了。
    但是部分功能会有问题,譬如
    但本系在批量删除和更新会有问题,本系统不采用此处可不修改
    2.将antlr-2.7.6.jar拷贝到bea\wlserver_10.3\server\lib目录下且放置在weblogic.jar的前面,然后修改user_projects\domains\base_domain\bin目录下的startWebLogic.cmd
    在set CLASSPATH之前加上下面一句:
    set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
    在set CLASSPATH之后加上下面一句:
    set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH% 问题随即解决。
    这种方法试过了,只是支持查询,更新和删除就会报错