项目中使用了Struts2、spring3、hibernate3等框架。在开发环境中使用Tomcat6.0部署可正常运行,但在linux环境中部署到Weblogic10.3.5.0上运行报如下异常:
原因:
weblogic中已经有了一个antlr.jar包,而hibernate3用到了weblogic中较低版本的antlr.jar,所导致的异常。
解决方法:
在CLASSPATH处修改如下:
或
重新启动即可正常运行。
注:可以将antlr-2.7.6.jar放到weblogic的公用lib中如:/opt/Oracle/Middleware/wlserver_10.3/server/lib/antlr-2.7.6.jar,这样其他的domain配置文件中都可引用同一个jar
- org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
原因:
weblogic中已经有了一个antlr.jar包,而hibernate3用到了weblogic中较低版本的antlr.jar,所导致的异常。
解决方法:
- 1、将项目中的antlr-2.7.6.jar拷贝到${DOMAIN_HOME}/lib下;
- 2、使用“vi startWebLogic.sh”命令打开启动脚本,并找到如下部分:
- DOMAIN_HOME="/opt/Oracle/Middleware/user_projects/domains/store_domain"
- . ${DOMAIN_HOME}/bin/setDomainEnv.sh $*
- LASS_PATH
- SAVE_CLASSPATH="${CLASSPATH}"
- # Start Derby
- DERBY_DEBUG_LEVEL="0"
- if [ "${DERBY_FLAG}" = "true" ] ; then
- ${WL_HOME}/common/derby/bin/startNetworkServer.sh >"${DOMAIN_HOME}/derby.log" 2>&1
- fi
- JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}"
- SAVE_JAVA_OPTIONS=""
- CLASSPATH="${SAVE_CLASSPATH}"
在CLASSPATH处修改如下:
- TEMP_CLASS_PATH="${DOMAIN_HOME}/lib/antlr-2.7.6.jar"
- CLASSPATH="${TEMP_CLASS_PATH}:${SAVE_CLASSPATH}"
或
- export TEMP_CLASS_PATH=/opt/Oracle/Middleware/user_projects/domains/store_domain/lib/antlr-2.7.6.jar
- export CLASSPATH=%SAVE_CLASSPATH%
- export CLASSPATH=%TEMP_CLASS_PATH%;%CLASSPATH%
重新启动即可正常运行。
注:可以将antlr-2.7.6.jar放到weblogic的公用lib中如:/opt/Oracle/Middleware/wlserver_10.3/server/lib/antlr-2.7.6.jar,这样其他的domain配置文件中都可引用同一个jar