<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi Michael,<br>
      <br>
      The imports are available as are the *.compiled files.<br>
      <br>
      I must add that this did work in 5.4.0.Final and now is "broken".<br>
      <br>
      Willem<br>
      <br>
      On 10/24/2012 12:27 PM, Michael Anstis wrote:<br>
    </div>
    <blockquote
cite="mid:CAAG9P0vHe04wKXsLb+yrdc0Pj6VZmwaQddMTSYFBawatJBobDg@mail.gmail.com"
      type="cite">Are the classes you import in your DRL available on
      the classpath at runtime?<br>
      <br>
      <div class="gmail_quote">On 24 October 2012 11:10, Willem van
        Asperen <span dir="ltr">&lt;<a moz-do-not-send="true"
            href="mailto:willem@van.asperen.org" target="_blank">willem@van.asperen.org</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear All,<br>
          <br>
          I use the Drools compiler to compile a set of drl files:<br>
          <br>
          <br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KnowledgeBuilder kbuilder =<br>
          KnowledgeBuilderFactory.newKnowledgeBuilder(configuration);<br>
          &nbsp; &nbsp; &nbsp; &nbsp;
          &nbsp;kbuilder.add(ResourceFactory.newFileResource(fileName),<br>
          ResourceType.DRL);<br>
          <br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KnowledgeBuilderErrors errors = kbuilder.getErrors();<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (errors.size() &gt; 0) {<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (KnowledgeBuilderError error: errors) {<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;logger.error(error);<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw new IllegalArgumentException("Could not
          parse<br>
          knowledge.");<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
          <br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectOutputStream out = new ObjectOutputStream(new<br>
          FileOutputStream(fileName+".compiled"));<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.writeObject( kbuilder.getKnowledgePackages());<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.close();<br>
          <br>
          I then load these *.compiled files into my application:<br>
          <br>
          <br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (String packageName : packages) {<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InputStream is =<br>
getClass().getResourceAsStream("/"+packageName+".drl.compiled");<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (is != null) {<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;logger.debug("adding package
          '"+packageName+"'");<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectInputStream in = new
          ObjectInputStream(is);<br>
          kbase.addKnowledgePackages((Collection&lt;KnowledgePackage&gt;)
          in.readObject());<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;in.close();<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw new FileNotFoundException("could not
          find<br>
          resource for package "+packageName);<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;is.close();<br>
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
          <br>
          In some of these drl files I declare a class, for instance:<br>
          <br>
          package vcm.selection.standard;<br>
          <br>
          import com.paconsulting.pase.transport.agents.ShiftWorker;<br>
          import com.paconsulting.pase.transport.agents.VCMShiftWorker;<br>
          import
          com.paconsulting.pase.transport.actions.ExecutableAction;<br>
          import
          com.paconsulting.pase.transport.agents.ScheduleManagingContainer;<br>
          import com.paconsulting.pase.transport.agents.water.Bridge;<br>
          import
          com.paconsulting.pase.transport.agents.movers.AbstractMover;<br>
          import com.paconsulting.pase.transport.agents.movers.Ship;<br>
          import com.paconsulting.pase.transport.agents.movers.VCMShip;<br>
          <br>
          declare RelevantExecutableAction<br>
          &nbsp; &nbsp; &nbsp;agent : ShiftWorker<br>
          &nbsp; &nbsp; &nbsp;executableAction : ExecutableAction<br>
          end<br>
          ...<br>
          <br>
          When running the<br>
kbase.addKnowledgePackages((Collection&lt;KnowledgePackage&gt;)<br>
          in.readObject()) I get the following ClassNotFound stack
          trace:<br>
          <br>
          java.lang.ClassNotFoundException:<br>
          vcm.selection.standard.RelevantExecutableAction<br>
          &nbsp; &nbsp; &nbsp;at java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
          &nbsp; &nbsp; &nbsp;at java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
          &nbsp; &nbsp; &nbsp;at java.security.AccessController.doPrivileged(Native
          Method)<br>
          &nbsp; &nbsp; &nbsp;at
          java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:423)<br>
          &nbsp; &nbsp; &nbsp;at
          sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:356)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.Class.forName0(Native Method)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.Class.forName(Class.java:264)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readClass(ObjectInputStream.java:1480)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1330)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.rule.ConsequenceMetaData$Statement.readExternal(ConsequenceMetaData.java:61)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at java.util.ArrayList.readObject(ArrayList.java:733)<br>
          &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
          Method)<br>
          &nbsp; &nbsp; &nbsp;at<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
          &nbsp; &nbsp; &nbsp;at<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Method.java:601)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.rule.ConsequenceMetaData.readExternal(ConsequenceMetaData.java:19)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at org.drools.rule.Rule.readExternal(Rule.java:207)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at java.util.HashMap.readObject(HashMap.java:1155)<br>
          &nbsp; &nbsp; &nbsp;at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown
          Source)<br>
          &nbsp; &nbsp; &nbsp;at<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Method.java:601)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:58)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at org.drools.rule.Package.readExternal(Package.java:208)<br>
          &nbsp; &nbsp; &nbsp;at<br>
org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:157)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at java.util.ArrayList.readObject(ArrayList.java:733)<br>
          &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
          Method)<br>
          &nbsp; &nbsp; &nbsp;at<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
          &nbsp; &nbsp; &nbsp;at<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
          &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Method.java:601)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)<br>
          &nbsp; &nbsp; &nbsp;at<br>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)<br>
          &nbsp; &nbsp; &nbsp;at
          java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.addPackages(KnowledgebaseDefinition.java:48)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.materialize(KnowledgebaseDefinition.java:59)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.definition.TeamDefinition.materialize(TeamDefinition.java:97)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.definition.OperatingModelDefinition.materialize(OperatingModelDefinition.java:36)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.Run.&lt;init&gt;(Run.java:31)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.definition.RunDefinition.materialize(RunDefinition.java:53)<br>
          &nbsp; &nbsp; &nbsp;at<br>
com.paconsulting.pase.core.configuration.runconfig.RunConfigExecutor$ScheduleExecutorWrapper.run(RunConfigExecutor.java:69)<br>
          ...<br>
          <br>
          I'm sure I miss something as this is basic functionality.
          Maybe I must<br>
          tell the kbase where to load the classes...<br>
          <br>
          Can someone point me in the right direction?<br>
          <br>
          Thanks,<br>
          Willem<br>
          <br>
          _______________________________________________<br>
          rules-users mailing list<br>
          <a moz-do-not-send="true"
            href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
          <a moz-do-not-send="true"
            href="https://lists.jboss.org/mailman/listinfo/rules-users"
            target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
  </body>
</html>