最近开始学习jbpm,从4.3下手的,准备自己写一个例子的,但是运行tomcat就出错。报错说ProcessEngine编译不了,现在问题解决,记录一下。
下面是错误信息:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 19 in the jsp file: /index.jsp
ProcessEngine cannot be resolved to a type
16: <a href="<%=request.getContextPath()%>/login.jsp">登陆</a>
17: <br />
18: <%
19: ProcessEngine processEngine = Configuration.getProcessEngine();
20: //流程定义
21: RepositoryService repositoryService = processEngine.getRepositoryService();
22: List<ProcessDefinition> pdList = repositoryService.createProcessDefinitionQuery().list();
。。。。以下省略n个字
==================================================
解决办法:
在当前工程的属性里设置引jar包的方式
1、将Java Build Path里面引的JBPM的jar包删除,
2、在Java EE Module Dependencies中添加jbpm.jar和lib下的jar包,其中不要添加这三个jar包(juel-impl.jar,juel-engine.jar,juel-api.jar)
ok这样就可运行了呢。呵呵
我用的是eclipse3.5 galileo jee版的,原因应该是Java Build Path引的jar不能同步发布到tomcat下,所以在Java EE Module Dependencies引用相关的jar,web工程就可以运行了。
========问题补充=======================================================
以上的确是可以运行了web工程了。可是启动流程的时候又报错了。
错误信息如下:
java.lang.NoClassDefFoundError: de/odysseus/el/ExpressionFactoryImpl
at org.jbpm.pvm.internal.script.JuelScriptEngineFactory.getScriptEngine(JuelScriptEngineFactory.java:185)
at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:205)
at org.jbpm.pvm.internal.script.ScriptManager.evaluate(ScriptManager.java:111)
at org.jbpm.pvm.internal.script.ScriptManager.evaluateExpression(ScriptManager.java:90)
。。。。以下省略n字
原因是jbpm的el表达式和tomcat自带的el表达式有冲突,
因此做了一下尝试,
把上面所说的解决办法中的第2步少引的三个eljar包引入,然后把tomcat下面的el.jar包删除;
结果失败,还是报上面的错误;
尝试可行的另一解决办法:
3、把jbpm的lib包下的(juel-impl.jar,juel-engine.jar,juel-api.jar)这三个jar包copy到tomcat的lib目录下,然后把tomcat下面的el.jar包删除,
ok,问题解决,正常启动了流程。