<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Consolas" size="2"><span style="font-size:10.5pt;">
<div>I have what looks to me like a Drools bug on a simple drl with declared classes. I'm using version drools-distribution-5.3.0.Final.</div>
<div>&nbsp;</div>
<div>I'm invoking it with this:</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Object&gt; facts = new ArrayList&lt;Object&gt;();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksession.execute( facts );</div>
<div>&nbsp;</div>
<div>=============================</div>
<div>&nbsp;</div>
<div>I get this crash:</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: com/sample/Cap</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at ASMAccessorImpl_129541121334339192620.getValue(Unknown Source)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.mvel2.optimizers.dynamic.DynamicGetAccessor.getValue(DynamicGetAccessor.java:73)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:103)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:42)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.mvel2.MVEL.executeExpression(MVEL.java:952)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</div>
<div>&nbsp;</div>
<div>==========================</div>
<div>&nbsp;</div>
<div>Here's the drl file:</div>
<div>&nbsp;</div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>package</b><font color="black"> com.sample</font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>import</b><font color="black"> com.sample.*;</font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>declare</b><font color="black"> Item</font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">id : </span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>int</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">;</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>declare</b><font color="black"> Priority</font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">name : String;</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">priority : </span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>int</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">;</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>declare</b><font color="black"> Cap</font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">item : Item;</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">name : String</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>rule</b><font color="black"> </font><font color="green">&quot;split cart into items&quot;</font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>when</b></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>then</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Item(1));</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Item(2));</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Item(3));</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>rule</b><font color="black"> </font><font color="green">&quot;Priorities&quot;</font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>when</b></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>then</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Priority(</span></font><font face="Courier New" size="2" color="green"><span style="font-size:10pt;">&quot;A&quot;</span></font><font face="Courier New" size="2"><span style="font-size:10pt;">, 3));</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Priority(</span></font><font face="Courier New" size="2" color="green"><span style="font-size:10pt;">&quot;B&quot;</span></font><font face="Courier New" size="2"><span style="font-size:10pt;">, 2));</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Priority(</span></font><font face="Courier New" size="2" color="green"><span style="font-size:10pt;">&quot;C&quot;</span></font><font face="Courier New" size="2"><span style="font-size:10pt;">, 5));</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>rule</b><font color="black"> </font><font color="green">&quot;Caps&quot;</font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>when</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">$i : Item()</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">$p : Priority($name : name)</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>then</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>insert</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>new</b></span></font><font face="Courier New" size="2"><span style="font-size:10pt;">
Cap($i, $name));</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>rule</b><font color="black"> </font><font color="green">&quot;test&quot;</font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>when</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">$i : Item()</span></font></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">Cap(item.id == $i.id)&nbsp;&nbsp; </span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>then</b></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New" size="2"><span style="font-size:10pt;">System.out.println(</span></font><font face="Courier New" size="2" color="green"><span style="font-size:10pt;">&quot;Cap&quot;</span></font><font face="Courier New" size="2"><span style="font-size:10pt;">);</span></font></span></font></div>
<div><font face="Courier New" size="2" color="#960000"><span style="font-size:10pt;"><b>end</b></span></font></div>
<div>&nbsp;</div>
<div>====================</div>
<div>&nbsp;</div>
<div>Some observations:</div>
<div>- If I comment out any of the insert lines, the crash goes away</div>
<div>- If I change the first field of class Cap to be id:int instead of item:Item and make the corresponding changes, the crash goes away</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
</span></font>
</body>
</html>