【bug解决】weblogic10和hibernate3 冲突解决方案,ClassNotFoundException: org.hibernate.hql.ast.HqlToken

       大家好,我是一直默默努力的大龄程序媛大丫姨,今天协助客户发布一个2015年的hibernate的老工程遇到了一个问题,在Weblogic中部署Hibernate的项目,启动WebLogic时没有问题,但是点击某一个菜单界面提示:“ClassNotFoundException: org.hibernate.hql.ast.HqlToken”,刚开始没有上网查原因,一直以为war包太旧的问题,后面从其他运行没问题的单位把包拷贝过来修改配置文件后继续报错,后面才在网上查原因,但有的只写了下面步骤的第一步,参照执行后问题一直都没有解决,但是知道是weblogic10和hibernate3的冲突问题,于是上网查“weblogic10和hibernate3的冲突问题”。


错误原因:

在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。

出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。

解决办法:三个步骤

1:在用户工程代码web-inf下建立xml文件:weblogic.xml(此步可省,我没有加)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app> 

    <container-descriptor>

        <prefer-web-inf-classes>true</prefer-web-inf-classes>

    </container-descriptor>

</weblogic-web-app>

2:拷贝用户工程里的antlr-2.7.6rc1.jar到weblogic10目录:D:/bea/wlserver_10.0/server/lib

3:改造当前weblogic用户的startWebLogic.cmd(我的之前应该是有人试着解决过,是加好的)

set PRE_CLASSPATH=%WL_HOME%/server/lib/antlr-2.7.6rc1.jar 

set CLASSPATH=%SAVE_CLASSPATH%—————————原来的保留

set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%

————————————————

参考链接:https://blog.csdn.net/shimiso/article/details/6045160

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容