关于JBPM4与S2SH整合的异常:expression factory class not found : javax.el.ELException: expression factory

  介于现在jbpm工作流现在在一些公司尤其是政府等事业单位里面应用越来越多的情况,但是网上一些关于jbpm4和Struts2、Spring和hibernate的整合过程中出现的异常资料比较少,所以总结一下在此整合的过程中出现的比较新手在配置整合的时候经常遇到的异常,其中一个比较典型的异常就是:expression factory class not found : javax.el.ELException: expression factor,那么接下来分享一下产生此异常的原因和解决的方法:

     原因:由于jbpm4工作流自带的有与数据库连接的session-factory,而hibernate也有自己的session-factory,所以在两者之间的整合导入jar包的过程中就会出现jar包冲突的问题,如果jar包发生冲突那么我们在启动工程之后,在发布流程图的时候,可能会产生Resource:/resource   a.jdpl.xml  not  exist,也可能在浏览器访问的时候产生:

  

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:274)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
	org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
	org.apache.jsp.login_jsp._jspInit(login_jsp.java:23)
	org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
	org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
	org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

   这些异常就是jar包冲突导致的,解决办法有两种:

    1、第一种解决办法:在你的tomcat目录里面有一个lib的jar包文件夹,tomcat\apache-tomcat-6.0.14\apache-tomcat-6.0.14\lib,里面有一个el.jar的jar包,就是这个jar包和jbpm4的juel-api.jar、juel-engine.jar和juel-impl.jar三个jar包之间的冲突,在配置的时候不要更改tomcat\apache-tomcat-6.0.14\apache-tomcat-6.0.14\lib里面的el.jar包,就放置在这个lib里面,而在导入jbpm4的jar包到project项目里面的时候,去掉WEB-INF里面的lib里面的juel-api.jar、juel-engine.jar三个jar包就不会产生这个异常了!

    2、第二种解决办法就是:将tomcat\apache-tomcat-6.0.14\apache-tomcat-6.0.14\lib里面的el.jar这个jar包删除,将juel-api.jar、juel-engine.jar和juel-impl.jar三个jar包导入到tomcat\apache-tomcat-6.0.14\apache-tomcat-6.0.14\lib里面,然后在导入jbpm4的jar包到WEB-INF的lib里面的时候删除juel-api.jar、juel-engine.jar和juel-impl.jar这三个jar包就可以了,这时候tomcat里面就有了这三个jar包了,不用在WEB-INF里面的lib再去配置了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值