Description of problem: In LHS part of a rule I invoke a function that adds a number of seconds to a date (attribute of the fact), and returns the new date. Function: function Date addSeconds(Date initialDate, int numSecs) { Calendar cal = Calendar.getInstance(); cal.setTime(initialDate); cal.add(Calendar.SECOND, numSecs); return cal.getTime(); } Rule: import GeoTruckCepData; import java.util.Date; import java.util.Calendar; when $a : GeoTruckCepData( $newDate : addSeconds(date1, 40) > date2); then //do something This rule is invoked in a loop, and works correctly for a while. But after some executions, the following exception is raised: Exception in thread "Thread-1" java.lang.NoClassDefFoundError: com/petrobras/bpms/AddSeconds at ConditionEvaluator530b9c3239cf450992fb5cef1bee783e.evaluate(Unknown Source) at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:212) at org.drools.core.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:169) at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134) at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:502) at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:387) at org.drools.core.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:288) at org.drools.core.reteoo.EntryPointNode.assertObject(EntryPointNode.java:260) at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:360) at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:279) at org.drools.core.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1149) at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:223) at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:217) at com.petrobras.bpms.Rule_GeoTruckCEP233101954.defaultConsequence(Rule_GeoTruckCEP233101954.java:21) at com.petrobras.bpms.Rule_GeoTruckCEP233101954DefaultConsequenceInvokerGenerated.evaluate(Unknown Source) at com.petrobras.bpms.Rule_GeoTruckCEP233101954DefaultConsequenceInvoker.evaluate(Unknown Source) at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1018) at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:128) at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:70) at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:937) at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1201) at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:958) at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:932) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:256) at com.petrobras.bpms.geotruck.TruckSimulator.run(TruckSimulator.java:68) Caused by: java.lang.ClassNotFoundException: com.petrobras.bpms.AddSeconds at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:87) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 25 more Exception in thread "Thread-0" java.lang.NoClassDefFoundError: com/petrobras/bpms/AddSeconds at ConditionEvaluator4b69caabd32b42328e08abfd9f55c916.evaluate(Unknown Source) at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:212) at org.drools.core.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:169) at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134) at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:502) at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:387) at org.drools.core.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:288) at org.drools.core.reteoo.EntryPointNode.assertObject(EntryPointNode.java:260) at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:360) at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:279) at org.drools.core.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1149) at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:223) at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:217) at com.petrobras.bpms.Rule_GeoTruckCEP233101954.defaultConsequence(Rule_GeoTruckCEP233101954.java:21) at com.petrobras.bpms.Rule_GeoTruckCEP233101954DefaultConsequenceInvokerGenerated.evaluate(Unknown Source) at com.petrobras.bpms.Rule_GeoTruckCEP233101954DefaultConsequenceInvoker.evaluate(Unknown Source) at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1018) at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:128) at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:70) at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:937) at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1201) at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:958) at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:932) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:256) at com.petrobras.bpms.geotruck.TruckSimulator.run(TruckSimulator.java:68) Caused by: java.lang.ClassNotFoundException: This is just a cached Exception. Disable non existing classes cache to see the actual one. at org.drools.core.common.ProjectClassLoader.<clinit>(ProjectClassLoader.java:18) at org.drools.compiler.kie.builder.impl.ClasspathKieProject.init(ClasspathKieProject.java:62) at org.drools.compiler.kie.builder.impl.KieContainerImpl.<init>(KieContainerImpl.java:77) at org.drools.compiler.kie.builder.impl.KieServicesImpl.getKieClasspathContainer(KieServicesImpl.java:64) at com.petrobras.bpms.geotruck.TruckSimulator.run(TruckSimulator.java:43) Version-Release number of selected component (if applicable): BPM Suite 6.0.0 Beta How reproducible: Very easy Steps to Reproduce: 1. Create rule that uses a function in LHS 2. Execute the rule in a loop 3. Wait until exception is raised (in my case, usually after 20 executions) Actual results: java.lang.NoClassDefFoundError exception raised Expected results: No exceptions raised. Additional info: This problem does not occur in BRMS version 5.3.1 The error is not associated with the fact attribute type (java.util.Date). I created another function that returns the sum of two integers, and the same behavior is verified.
*** This bug has been marked as a duplicate of bug 1060218 ***