解决WebLogic12C与项目中jar包冲突

环境配置:weblogic12C     Struts2.1.8+Spring2.5+Hibernate 3.3 

问题描述:项目在tomcat7下运行正常,但部署在WebLogic12C下运行时,就有如下异常: 

ClassNotFoundException: org.hibernate.hql.ast.HqlToken

语法解析器异常,提示找不到指定的Class



产生以上问题的原因是WebLogic为了去分析EJBQL,带有自己的Antlr.jar包,与项目中Hibernate的Antlr.jar包有冲突。

 

 

解决以上问题思路是让JVM优先加载web项目的antlr.jar包,而不是weblogic自带的较低版本的antlr.jar包。


一、如果是在MyEclipse中启动:

在MyEclipse的Preferences->Server->WebLogic->WebLogic10.x配置

展开Paths,在Prepend to classPath,将web项目lib目录下的antlr-2.7.6.jar包加入:


通过上面配置,启动WebLogic,问题解决。

 



二、如果是直接启动WebLogic部署,只需要在项目的WEB-INF/WebLogic.xml文件中添加

[html] view plaincopy

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

配置:

weblogic.xml 

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  4.   
  5.     <jsp-descriptor>  
  6.         <keepgenerated>false</keepgenerated>  
  7.         <!--   
  8.         page-check-seconds默认值是1,表示每隔1秒对JSP页面进行检查,检查JSP页面是否被修改、是否需要重新编译。  
  9.         系统上线后会影响性能,需要对该默认值修改为-1,表示永不检查  
  10.         -->  
  11.         <page-check-seconds>-1</page-check-seconds>  
  12.         <verbose>true</verbose>  
  13.         <debug>true</debug>  
  14.     </jsp-descriptor>  
  15.   
  16.     <container-descriptor>  
  17.         <!-- 指示优先从部署项目的WEB-INF/lib目录下加载jar包,解决WegLogic与hibernate包冲突问题 -->  
  18.         <prefer-web-inf-classes>true</prefer-web-inf-classes>  
  19.           
  20.         <!-- servlet-reload-check-secs的默认值也是1,每隔1秒检查servlet是否被修改并需要重新编译,  
  21.         很影响性能。这里建议修改为-1,表示永不检查  
  22.         -->  
  23.         <servlet-reload-check-secs>-1</servlet-reload-check-secs>  
  24.     </container-descriptor>  
  25.       
  26.     <context-root>/</context-root>  
  27. </weblogic-web-app>  

 

 


问题得到解决。

 

最后欢迎大家访问我的个人网站:1024s

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值