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