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