ClassNotFoundException Even if class exists!
chprvkmr Nov 23, 2005 1:32 AMHi,
Iam getting below stack trace when transition occured towards node, "state readFile".
Stack Trace
------------
java.lang.ClassNotFoundException: class 'com.sample.webapp.demo1.ReadFile' could not be found by the process classloader
at org.jbpm.instantiation.ProcessClassLoader.findClass(ProcessClassLoader.java:39)
at org.apache.jsp.tmp_jsp._jspService(org.apache.jsp.tmp_jsp:52)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:405)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:280)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:300)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:110)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sample.workflow.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sample.workflow.filter.PersistenceFilter.doFilter(PersistenceFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sample.workflow.filter.ContextFilter.doFilter(ContextFilter.java:20)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sample.workflow.filter.LogFilter.doFilter(LogFilter.java:38)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
11:20:17,407 ERROR [[/jbpm]] class 'com.sample.webapp.demo1.ReadFile' could not be found by the process classloader
Process Definition
---------------------
<?xml version="1.0" encoding="UTF-8"?> <process-definition name="open file"> <!-- SWIMLANES (= process roles) --> <swimlane name="fileOwner"> <assignment expression="user(ernie)" /> </swimlane> <swimlane name="pathOwner"> <assignment expression="user(bert)" /> </swimlane> <swimlane name="readFile" /> <!-- NODES --> <start-state name="state fileOwner"> <task swimlane="fileOwner"> <controller> <variable name="fileName" /> </controller> </task> <transition to="state pathOwner" /> </start-state> <task-node name="state pathOwner"> <task swimlane="pathOwner"> <controller> <variable name="fileName" access="read"/> <variable name="pathName"/> </controller> </task> <transition to="state readFile" /> </task-node> <node name="state readFile"> <action class="com.sample.webapp.demo1.ReadFile"> <msg>Action node Triggered For Reading File</msg> </action> <transition name="to end" to="end" /> </node> <end-state name="end" /> </process-definition>
But point is Iam able to create an instance of com.sample.webapp.demo1.ReadFile in a test.jsp file which is given below.
<%@ page language="java" %> <%@ page import="com.sample.webapp.demo1.ReadFile,org.jbpm.instantiation.*,org.jbpm.graph.def.*" %> <% ReadFile objRF = new ReadFile(); %>
when I added below snippet , ClassNotFoundException occured in test.jsp
ProcessClassLoader prCL = new ProcessClassLoader( ReadFile.class.getClassLoader(), new ProcessDefinition() ); prCL.findClass("com.sample.webapp.demo1.ReadFile");
In org.jbpm.instantiation.ProcessClassLoader.findClass(String name) method I found below line
fileName = "classes/" + name.replace( '.', '/' ) + ".class";
whether including "classes/" in fileName variable is creating a problem. How can I resolve this.
Thanks in advance