[rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

wasperen
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
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

manstis
Are the classes you import in your DRL available on the classpath at runtime?

On 24 October 2012 11:10, Willem van Asperen <[hidden email]> 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
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

wasperen
Hi Michael,

The imports are available as are the *.compiled files.

I must add that this did work in 5.4.0.Final and now is "broken".

Willem

On 10/24/2012 12:27 PM, Michael Anstis wrote:
Are the classes you import in your DRL available on the classpath at runtime?

On 24 October 2012 11:10, Willem van Asperen <[hidden email]> 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
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

laune
In reply to this post by wasperen
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 <[hidden email]> 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
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

wasperen
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 <[hidden email]> 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
>> [hidden email]
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] ClassNotFound on class defined in drl with 5.5.0.CR1

wasperen
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 <[hidden email]> 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 <[hidden email]> 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
>>>> [hidden email]
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> [hidden email]
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users