weblogic10与hibernate3中antlr.jar包冲突问题解决

背景

目前做的这个项目应用运行在weblogic服务器上面,weblogic特有的一些机制使得在websphere、tomcat上能够正常运行的应用,不能在weblogic上运行。本文中提到的weblogic10与hibernate3中antlr.jar包冲突问题就是其中的一种。

现象

在使用hibernate3查询数据库的时候,weblogic服务对应的java进程直接退出,后台报错如下:

CharScanner; panic:       ClassNotFoundException:org.hibernate.hql.ast.HqlToken 

原因

在hibernate3中需要用到antlr.jar,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。而出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。

解决

在weblogic启动脚本startWeblogic.sh中为CLASSPATH变量指定高版本的antlr类库,比如:

CLASSPATH="/opt/antlr-2.7.7.jar:${CLASSPATH}"
这里antlr类库的路径自己指定。至此问题得到解决。

你可能感兴趣的:(weblogic,hibernate3,HqlToken,antrl)