<div class="gmail_quote"><div>I just pushed the fix for the issue you found.<br><br>Regards and thank you again for having pointed it out,<br>Mario<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi All,<br>
<br>
As a first time GIT user... I think I have manager to &quot;pull this off&quot;<br>
and submitted a pull request for a test case in the drools-compiler<br>
project. This should add one file in src/test/ in the package<br>
org.drools.compiler.integration as I deemed that to be the most<br>
appropriate place.<br>
<br>
Regards,<br>
Willem<br>
<div class="HOEnZb"><div class="h5"><br>
On 10/26/2012 06:37 AM, Mark Proctor wrote:<br>
&gt; Would it be possible to submit a small self contains test, as a pull request. Here a detailed &quot;how to&quot; to get you started.<br>
&gt; <a href="http://docs.jboss.org/drools/release/5.4.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html" target="_blank">http://docs.jboss.org/drools/release/5.4.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html</a><br>

&gt;<br>
&gt; Thanks<br>
&gt;<br>
&gt; Mark<br>
&gt; On 25 Oct 2012, at 12:09, Willem van Asperen &lt;<a href="mailto:willem@van.asperen.org">willem@van.asperen.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Hi All,<br>
&gt;&gt;<br>
&gt;&gt; I have taken the liberty to log this in Jira at<br>
&gt;&gt; <a href="https://issues.jboss.org/browse/JBRULES-3670" target="_blank">https://issues.jboss.org/browse/JBRULES-3670</a><br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Willem<br>
&gt;&gt;<br>
&gt;&gt; On 10/25/2012 12:44 PM, Willem van Asperen wrote:<br>
&gt;&gt;&gt; Hi All,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The difference between failing or not stems from using insert() and<br>
&gt;&gt;&gt; retract() versus insertLogical(). The first two make the package fail to<br>
&gt;&gt;&gt; load, the latter seems to work fine.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I can create a package that *does* load, by adding a cast to the full<br>
&gt;&gt;&gt; class name in the rule:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; rule &quot;clean up possible slot lock, when no longer to schedule&quot;<br>
&gt;&gt;&gt;       when<br>
&gt;&gt;&gt;           $p : PossibleSlotLock( $ship; )<br>
&gt;&gt;&gt;           not ToScheduleLock( mover == $ship )<br>
&gt;&gt;&gt;       then<br>
&gt;&gt;&gt;           retract( (vcm.planner.lock.standard.PossibleSlotLock)$p );<br>
&gt;&gt;&gt; end<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; and by stating the full class name in the inserts, like so:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; insert(new vcm.planner.lock.standard.PossibleSlotLock($ship, $chamber,<br>
&gt;&gt;&gt; $side, $schedule, $eta, $schedule.getTick(), &quot;existing&quot;));<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This way the loading works fine.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So this is less about loading compiled files and more about class<br>
&gt;&gt;&gt; loading for insert() and retract().<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hope this helps!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I have also managed to reproduce this in a simple case. jar attached.<br>
&gt;&gt;&gt; Notice that when I change rule &quot;now use it B&quot; to have RHS &quot;insert( new<br>
&gt;&gt;&gt; Person( $christianName, null ) );&quot; the loading works. I can imagine the<br>
&gt;&gt;&gt; compiler / loader just assumes that a class with constructor Person(<br>
&gt;&gt;&gt; String, ExternalClass ) may become available at run time?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt; Willem<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 10/25/2012 11:32 AM, Willem van Asperen wrote:<br>
&gt;&gt;&gt;&gt; Hi All,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; To add to this, I&#39;ve done some further testing.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; It seems that the particular order in which each of the compiled<br>
&gt;&gt;&gt;&gt; packages is loaded does not matter.<br>
&gt;&gt;&gt;&gt; Not all packages that declare local classes fail... I have now found the<br>
&gt;&gt;&gt;&gt; two that do. I cannot see any striking differences between the ones that<br>
&gt;&gt;&gt;&gt; do and do not fail...<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; What I did find is that removing all the rules from the failing packages<br>
&gt;&gt;&gt;&gt; (so only leaving the imports and declare) seems to remove this issue!<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;ll dig &#39;round some more.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt;&gt; Willem<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 10/25/2012 01:45 AM, Wolfgang Laun wrote:<br>
&gt;&gt;&gt;&gt;&gt; Folks,<br>
&gt;&gt;&gt;&gt;&gt; it seems that something new in 5.5.0.CR1 sabotages the ingestion of<br>
&gt;&gt;&gt;&gt;&gt; compiled packages.<br>
&gt;&gt;&gt;&gt;&gt; -W<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; ---------- Forwarded message ----------<br>
&gt;&gt;&gt;&gt;&gt; From: Willem van Asperen &lt;<a href="mailto:willem@van.asperen.org">willem@van.asperen.org</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; Date: Thu, 25 Oct 2012 00:04:32 +0200<br>
&gt;&gt;&gt;&gt;&gt; Subject: Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1<br>
&gt;&gt;&gt;&gt;&gt; To: Wolfgang Laun &lt;<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>&gt;, Rules Users List<br>
&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; This was a good idea. Here is my test case:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; public class TestCompilation {<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;         private final static FileFilter RULES_FILES_FILTER = new FileFilter() {<br>
&gt;&gt;&gt;&gt;&gt;             @Override<br>
&gt;&gt;&gt;&gt;&gt;             public boolean accept(File pathname) {<br>
&gt;&gt;&gt;&gt;&gt;                 return pathname.getName().endsWith(&quot;.drl&quot;);<br>
&gt;&gt;&gt;&gt;&gt;             }<br>
&gt;&gt;&gt;&gt;&gt;         };<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;         private void testCompilation() throws FileNotFoundException,<br>
&gt;&gt;&gt;&gt;&gt; IOException {<br>
&gt;&gt;&gt;&gt;&gt;             KnowledgeBuilderConfiguration configuration =<br>
&gt;&gt;&gt;&gt;&gt; KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();<br>
&gt;&gt;&gt;&gt;&gt;             KnowledgeBuilder kbuilder =<br>
&gt;&gt;&gt;&gt;&gt; KnowledgeBuilderFactory.newKnowledgeBuilder(configuration);<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;             File folder = new File(&quot;src/main/rules/&quot;);<br>
&gt;&gt;&gt;&gt;&gt;             for (File file : folder.listFiles(RULES_FILES_FILTER)) {<br>
&gt;&gt;&gt;&gt;&gt;                 System.out.println(&quot;compiling &quot;+file.getAbsolutePath());<br>
&gt;&gt;&gt;&gt;&gt; kbuilder.add(ResourceFactory.newFileResource(file.getAbsolutePath()),<br>
&gt;&gt;&gt;&gt;&gt; ResourceType.DRL);<br>
&gt;&gt;&gt;&gt;&gt;             }<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;             System.out.println(&quot;saving&quot;);<br>
&gt;&gt;&gt;&gt;&gt;             ObjectOutputStream out = new ObjectOutputStream(new<br>
&gt;&gt;&gt;&gt;&gt; FileOutputStream(&quot;test.drl.compiled&quot;));<br>
&gt;&gt;&gt;&gt;&gt;             out.writeObject( kbuilder.getKnowledgePackages());<br>
&gt;&gt;&gt;&gt;&gt;             out.close();<br>
&gt;&gt;&gt;&gt;&gt;         }<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;         private KnowledgeBase testLoad() throws FileNotFoundException,<br>
&gt;&gt;&gt;&gt;&gt; IOException, ClassNotFoundException {<br>
&gt;&gt;&gt;&gt;&gt;             Properties configProperties = new Properties();<br>
&gt;&gt;&gt;&gt;&gt;             KnowledgeBaseConfiguration knowledgeBaseConfiguration =<br>
&gt;&gt;&gt;&gt;&gt; KnowledgeBaseFactory.newKnowledgeBaseConfiguration(configProperties);<br>
&gt;&gt;&gt;&gt;&gt;             KnowledgeBase kbase =<br>
&gt;&gt;&gt;&gt;&gt; KnowledgeBaseFactory.newKnowledgeBase(knowledgeBaseConfiguration);<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;             ObjectInputStream in = new ObjectInputStream(new<br>
&gt;&gt;&gt;&gt;&gt; FileInputStream(&quot;test.drl.compiled&quot;));<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;             System.out.println(&quot;loading&quot;);<br>
&gt;&gt;&gt;&gt;&gt; kbase.addKnowledgePackages((Collection&lt;KnowledgePackage&gt;) in.readObject());<br>
&gt;&gt;&gt;&gt;&gt;             return kbase;<br>
&gt;&gt;&gt;&gt;&gt;         }<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;         public static void main(String[] args) throws<br>
&gt;&gt;&gt;&gt;&gt; FileNotFoundException, IOException, ClassNotFoundException {<br>
&gt;&gt;&gt;&gt;&gt;             TestCompilation testCompilation = new TestCompilation();<br>
&gt;&gt;&gt;&gt;&gt;             testCompilation.testCompilation();<br>
&gt;&gt;&gt;&gt;&gt;             testCompilation.testLoad();<br>
&gt;&gt;&gt;&gt;&gt;         }<br>
&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; The folder src/main/rules consists of a number of .drl files.<br>
&gt;&gt;&gt;&gt;&gt; Compiling works fine.<br>
&gt;&gt;&gt;&gt;&gt; This is the output:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; SLF4J: Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;.<br>
&gt;&gt;&gt;&gt;&gt; SLF4J: Defaulting to no-operation (NOP) logger implementation<br>
&gt;&gt;&gt;&gt;&gt; SLF4J: See <a href="http://www.slf4j.org/codes.html#StaticLoggerBinder" target="_blank">http://www.slf4j.org/codes.html#StaticLoggerBinder</a> for<br>
&gt;&gt;&gt;&gt;&gt; further details.<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/planner-lock.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/executable-action-selection.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/block-times-3.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/planner-bridge.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/routeplan.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/shift-management-brabant.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/plan-first-object-in-route.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/operator-lock.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/block-times-route-call.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/shift-management.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/planner-process-data.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/plan-last-moment.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/operator-bridge.drl<br>
&gt;&gt;&gt;&gt;&gt; compiling<br>
&gt;&gt;&gt;&gt;&gt; /home/willem/development/workspace/VCM/src/main/rules/operator-management.drl<br>
&gt;&gt;&gt;&gt;&gt; saving<br>
&gt;&gt;&gt;&gt;&gt; loading<br>
&gt;&gt;&gt;&gt;&gt; Exception in thread &quot;main&quot; java.lang.ClassNotFoundException:<br>
&gt;&gt;&gt;&gt;&gt; vcm.planner.lock.standard.PossibleSlotLock<br>
&gt;&gt;&gt;&gt;&gt;         at java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
&gt;&gt;&gt;&gt;&gt;         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
&gt;&gt;&gt;&gt;&gt;         at java.security.AccessController.doPrivileged(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.ClassLoader.loadClass(ClassLoader.java:423)<br>
&gt;&gt;&gt;&gt;&gt;         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.ClassLoader.loadClass(ClassLoader.java:356)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.Class.forName0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.Class.forName(Class.java:264)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1480)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1330)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.rule.ConsequenceMetaData$Statement.readExternal(ConsequenceMetaData.java:61)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at java.util.ArrayList.readObject(ArrayList.java:733)<br>
&gt;&gt;&gt;&gt;&gt;         at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.rule.ConsequenceMetaData.readExternal(ConsequenceMetaData.java:19)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at org.drools.rule.Rule.readExternal(Rule.java:207)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at java.util.HashMap.readObject(HashMap.java:1155)<br>
&gt;&gt;&gt;&gt;&gt;         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:58)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at org.drools.rule.Package.readExternal(Package.java:208)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:157)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at java.util.ArrayList.readObject(ArrayList.java:733)<br>
&gt;&gt;&gt;&gt;&gt;         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;         at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.test.TestCompilation.testLoad(TestCompilation.java:57)<br>
&gt;&gt;&gt;&gt;&gt;         at<br>
&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.test.TestCompilation.main(TestCompilation.java:64)<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; The class PossibleSlotLock is just a locally declared fact class. It is<br>
&gt;&gt;&gt;&gt;&gt; only being used in that particular .drl file. Every .drl file has it&#39;s<br>
&gt;&gt;&gt;&gt;&gt; own package name.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; The head of the .drl file:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; package vcm.planner.lock.standard;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; import java.util.Set;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.core.schedule.CurrentTime;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.core.duration.FixedDuration;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.ScheduleManagingContainer;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.movers.Ship;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.water.Lock;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.water.LockChamber;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.base.WaterLevel;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.action.ActionFactory;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.actions.IAction;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.action.IActionable;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.actions.NonTransactionAction;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.actions.ExecutableAction;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.containing.IContainer;<br>
&gt;&gt;&gt;&gt;&gt; import<br>
&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.transport.components.containing.IContainer.UpDown;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.moving.IMover;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.moving.TransferSchedule;<br>
&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.components.moving.ToScheduleLock;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; declare PossibleSlotLock<br>
&gt;&gt;&gt;&gt;&gt;         ship : IMover<br>
&gt;&gt;&gt;&gt;&gt;         chamber : IContainer<br>
&gt;&gt;&gt;&gt;&gt;         side : IContainer.UpDown<br>
&gt;&gt;&gt;&gt;&gt;         schedule : TransferSchedule<br>
&gt;&gt;&gt;&gt;&gt;         eta : double<br>
&gt;&gt;&gt;&gt;&gt;         at : double<br>
&gt;&gt;&gt;&gt;&gt;         cause : String<br>
&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt; ....<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Same issue like in my previous email, different class that cannot be found.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; This works in 5.4.0.Final<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Any clue?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; This seems to me like a really basic thing so either I am missing the<br>
&gt;&gt;&gt;&gt;&gt; plot somehow or no-one has yet used a locally declared fact classes -<br>
&gt;&gt;&gt;&gt;&gt; which I think is just not true...<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt;&gt;&gt; Willem<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On 10/24/2012 07:29 PM, Wolfgang Laun wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt; It would be interesting to know (and perhaps help to isolate the problem<br>
&gt;&gt;&gt;&gt;&gt;&gt; apparently introduced in 5.5.0) if you could try and compile and<br>
&gt;&gt;&gt;&gt;&gt;&gt; serialize into a single file, and load that in a single readObject.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; -W<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; On 24/10/2012, Willem van Asperen &lt;<a href="mailto:willem@van.asperen.org">willem@van.asperen.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi Wolfgang,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks for picking this up. I am indeed compiling these separate .drl<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; files into separate .drl.compiled files and then creating a kbase using<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; addKnowledgePackages on the individual .drl.compiled files.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; But: the classes declared in some of by .drl files are only going to be<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; used in that particular .drl file - not anywhere else.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Also: this did work in 5.4.0.Final but now has given up on me.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Point is that I need to be flexible in mixing different .drl.compiled<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; files into a kbase, based on user specifications.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Alternative is that I do not pre-compile these .drl files and only<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; compile them, in combination, in the mix that is required by the user...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; If that would solve the problem... But it seems to be more cumbersome...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Willem<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 10/24/2012 03:39 PM, Wolfgang Laun wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The code you use for loading where you load many .pkg files isn&#39;t<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; quite the counterpart for compiling where you compile one DRL.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Do you compile and output the .drl files one by one? Apparently you<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; load them individually?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Try compiling them all, and then take the Collection&lt;KnowledgePackage&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and writeObject it to a single .pkg from which you load them in one<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; go.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Could it be that the type declared in one .drl is used in another .drl<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in the same package? Reading this in the wrong order might cause the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CNF.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -W<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 24/10/2012, Willem van Asperen &lt;<a href="mailto:willem@van.asperen.org">willem@van.asperen.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Dear All,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I use the Drools compiler to compile a set of drl files:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               KnowledgeBuilder kbuilder =<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; KnowledgeBuilderFactory.newKnowledgeBuilder(configuration);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               kbuilder.add(ResourceFactory.newFileResource(fileName),<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ResourceType.DRL);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               KnowledgeBuilderErrors errors = kbuilder.getErrors();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               if (errors.size() &gt; 0) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   for (KnowledgeBuilderError error: errors) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                       logger.error(error);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   throw new IllegalArgumentException(&quot;Could not parse<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; knowledge.&quot;);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               ObjectOutputStream out = new ObjectOutputStream(new<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; FileOutputStream(fileName+&quot;.compiled&quot;));<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               out.writeObject( kbuilder.getKnowledgePackages());<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               out.close();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I then load these *.compiled files into my application:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               for (String packageName : packages) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   InputStream is =<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; getClass().getResourceAsStream(&quot;/&quot;+packageName+&quot;.drl.compiled&quot;);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   if (is != null) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                       logger.debug(&quot;adding package &#39;&quot;+packageName+&quot;&#39;&quot;);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                       ObjectInputStream in = new ObjectInputStream(is);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; kbase.addKnowledgePackages((Collection&lt;KnowledgePackage&gt;)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in.readObject());<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                       in.close();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   } else<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                       throw new FileNotFoundException(&quot;could not find<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; resource for package &quot;+packageName);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                   is.close();<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;               }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; In some of these drl files I declare a class, for instance:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; package vcm.selection.standard;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.ShiftWorker;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.VCMShiftWorker;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.actions.ExecutableAction;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.ScheduleManagingContainer;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.water.Bridge;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.movers.AbstractMover;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.movers.Ship;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; import com.paconsulting.pase.transport.agents.movers.VCMShip;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; declare RelevantExecutableAction<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           agent : ShiftWorker<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           executableAction : ExecutableAction<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; When running the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; kbase.addKnowledgePackages((Collection&lt;KnowledgePackage&gt;)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in.readObject()) I get the following ClassNotFound stack trace:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.lang.ClassNotFoundException:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; vcm.selection.standard.RelevantExecutableAction<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.security.AccessController.doPrivileged(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.ClassLoader.loadClass(ClassLoader.java:423)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.ClassLoader.loadClass(ClassLoader.java:356)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.Class.forName0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.Class.forName(Class.java:264)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readClass(ObjectInputStream.java:1480)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1330)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.rule.ConsequenceMetaData$Statement.readExternal(ConsequenceMetaData.java:61)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.util.ArrayList.readObject(ArrayList.java:733)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.rule.ConsequenceMetaData.readExternal(ConsequenceMetaData.java:19)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at org.drools.rule.Rule.readExternal(Rule.java:207)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.util.HashMap.readObject(HashMap.java:1155)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:58)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at org.drools.rule.Package.readExternal(Package.java:208)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:157)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.util.ArrayList.readObject(ArrayList.java:733)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at java.lang.reflect.Method.invoke(Method.java:601)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.addPackages(KnowledgebaseDefinition.java:48)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.materialize(KnowledgebaseDefinition.java:59)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.definition.TeamDefinition.materialize(TeamDefinition.java:97)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.definition.OperatingModelDefinition.materialize(OperatingModelDefinition.java:36)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.Run.&lt;init&gt;(Run.java:31)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.definition.RunDefinition.materialize(RunDefinition.java:53)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;           at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; com.paconsulting.pase.core.configuration.runconfig.RunConfigExecutor$ScheduleExecutorWrapper.run(RunConfigExecutor.java:69)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I&#39;m sure I miss something as this is basic functionality. Maybe I must<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tell the kbase where to load the classes...<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Can someone point me in the right direction?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Willem<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; rules-dev mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; rules-dev mailing list<br>
&gt;&gt; <a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rules-dev mailing list<br>
&gt; <a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
<br>
_______________________________________________<br>
rules-dev mailing list<br>
<a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
</div></div></blockquote></div><br>