项目在tomcat上部署没问题,换到WebLogic10.3上就报错,org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken。
原因在于WebLogic与hibernate3的antlr.jar包冲突。在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误。这样weblogic就会中止服务。
一个最简单的解决办法,就是在WEB-INF目录下加入一个配置文件weblogic.xml,内容如下即可
<weblogic-web-app
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd">
<container-descriptor>
<!--优先加载位于 Web 应用程序的 WEB-INF 目录中的类,然后再加载应用程序或系统类加载器中的类-->
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>