I've been struggling with a NoSuchMethodError as well whenever I added any
simple Action to my ruleflow:
java.lang.NoSuchMethodError:
my.package.Process_my_package_0.action0(Lorg/drools/spi/KnowledgeHelper;Ljava/lang/Object;Lorg/drools/spi/ProcessContext;)V
at
my.package.Process_my_package_0Action0Invoker.execute(Process_my_package_0Action0Invoker.java:21)
at
org.drools.workflow.instance.impl.ExtendedNodeInstanceImpl.executeAction(ExtendedNodeInstanceImpl.java:66)
at
org.drools.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerEvent(ExtendedNodeInstanceImpl.java:45)
at
org.drools.workflow.instance.impl.ExtendedNodeInstanceImpl.internalTrigger(ExtendedNodeInstanceImpl.java:28)
at
org.drools.workflow.instance.node.EventBasedNodeInstance.internalTrigger(EventBasedNodeInstance.java:30)
at
org.drools.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:80)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128)
at
org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at
org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111)
at
org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:16)
at
org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:185)
at
org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:230)
at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1639)
at
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
at
org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
In my scenario I have two ruleflows in the knowledge base. One is the
subflow of the other one and both contain an action.
To localize the cause of the problem, I only started the subflow separately
and finally found that the NoSuchMethodError does NOT occur if
- the subprocess is added to the knowledge base AFTER the main process.
- the two processes don't have the same package name
So it seems like there is a name collision. The generated action of the
second ruleflow seems to overwrite the generated action of the first one.
Since both processes dont just execute the same action after that, but
instead the action of the first process is not found, I assume this is a
bug...
The workaround is to simply use different package names.
--
View this message in context:
http://drools-java-rules-engine.46999.n3.nabble.com/java-lang-NoSuchMetho...
Sent from the Drools - User mailing list archive at
Nabble.com.