<div>Consider adapting to the new API using KnowledgeBuilder etc. You can use a ObjectOutput/InputStream with write/readObject on Collection&lt;KnowledgePackage&gt;, which simplifies matters somewhat.</div>
<div> </div>
<div>See below, two remarks.<br><br> </div>
<div><span class="gmail_quote">On 7/23/09, <b class="gmail_sendername">Olaf Raether</b> &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:o.raether@epro.de" target="_blank">o.raether@epro.de</a>&gt; wrote:</span></div>

<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>I create *.pkg file with the following app:<br><br>--------------------------------------------------------------------------------------------------<br>
import java.io.File;<br>import java.io.FileOutputStream;<br>import java.io.InputStreamReader;<br>import java.io.ObjectOutputStream;<br>import java.net.URL;<br><br>import org.drools.RuleBase;<br>import org.drools.RuleBaseFactory;<br>
import org.drools.WorkingMemory;<br>import org.drools.rule.Package;<br>import org.drools.compiler.PackageBuilder;<br><br>public class DroolsPackageWriter {<br><br>       String[] fileNames = { &quot;rulefile1&quot;, &quot;rulefile2&quot;};<br>
<br>       public void readWritePackages() {<br><br>               for(int i = 0; i &lt; fileNames.length; i++) {<br>                       try {<br><br>                       RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>
                   PackageBuilder builder = new PackageBuilder();<br><br>                   String ruleFile = fileNames[i] + &quot;.drl&quot;;<br>                   System.out.println(&quot;Lese:&quot;+ ruleFile);<br><br>
                   builder.addPackageFromDrl(new<br>InputStreamReader(DroolsPackageWriter.class.getResourceAsStream(ruleFile)));</blockquote>
<div> </div>
<div>Here, call builder.getErrors() or at least builder.hasErrors() and check the result.</div>
<div> <br> </div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">                   Package pkg = builder.getPackage();<br>                   ruleBase.addPackage(pkg);<br>
                   WorkingMemory workingMemory = ruleBase.newStatefulSession();<br>                   workingMemory.fireAllRules();<br><br>                   URL url = DroolsPackageWriter.class.getResource(ruleFile);<br>                   String file = url.getPath().replaceAll(&quot;%20&quot;,&quot; &quot;).replaceAll(&quot;.drl&quot;,<br>
&quot;.pkg&quot;);<br>                   File f = new File(file);<br><br>                   pkg.writeExternal(new ObjectOutputStream(new FileOutputStream(f)));<br>                   System.out.println(&quot;geschrieben:&quot;+ file);<br>
                       }<br>                       catch(Exception ex) {<br>                               ex.printStackTrace();<br>                       }<br>               }<br>       }<br><br>       /**<br>        * @param args<br>
        */<br>       public static void main(String[] args) {<br>               DroolsPackageWriter dpw = new DroolsPackageWriter();<br>               dpw.readWritePackages();<br><br>       }<br><br>}<br>--------------------------------------------------------------------------------------------------<br>
<br><br>I the app where i read the *.pkg files the code looks like this:<br><br>---------------------------------------------------------------<br>String[] rules = new String[]{&quot;rule1.pkg&quot;,&quot;rule2.pkg&quot; };</blockquote>

<div> </div>
<div> </div>
<div>Above, we had rulefile1, rulefile2?</div><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>for (int i = 0; i &lt; rules.length; i++) {<br>       String ruleFile = rules[i];<br>
       log.debug(&quot;Loading file: &quot; + ruleFile);<br>       pkg = new Package();<br>       pkg.readExternal(new<br>ObjectInputStream(this.getClass().getResourceAsStream(ruleFile)));<br>       ruleBase.addPackage(pkg);<br>
}<br><br>WorkingMemory workingMemory = ruleBase.newStatefulSession();<br>setGlobals(workingMemory);<br><br>Object[] facts = { /* anything you want */};<br>for (int i = 0; i &lt; facts.length; i++) {<br>Object fact = facts[i];<br>
log.debug(&quot;Inserting fact: &quot; + fact);<br>try {<br>         workingMemory.insert(fact);<br>} catch(NullPointerException npe) {<br>         System.out.println(&quot;NPE bei Fact:&quot;+fact);<br>         npe.printStackTrace();<br>
}<br>}<br>workingMemory.fireAllRules();<br>log.debug(&quot;END: runRules()&quot;);<br>}<br>---------------------------------------------------------------<br><br>Hope this helps - to help me !<br><br><br><br><br><br>Wolfgang Laun-2 wrote:<br>
&gt;<br>&gt; On 7/23/09, Olaf Raether &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:o.raether@epro.de" target="_blank">o.raether@epro.de</a>&gt; wrote:<br>&gt;&gt;<br>&gt;&gt; The code looks  like this:<br>
&gt;&gt;<br>&gt;&gt; RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>&gt;&gt; for (int i = 0; i &lt; rules.length; i++) {<br>&gt;&gt;       Package pkg = getPackage(i);<br>&gt;&gt;       ruleBase.addPackage(pkg);<br>
&gt;&gt; }<br>&gt;<br>&gt;<br>&gt; I&#39;d expect to find &quot;Package pkg = rules[i];&quot; or similar in the loop.<br>&gt; Anyway, this doesn&#39;t tell how the Package objects were created from your<br>&gt; two<br>&gt; rules files, which might be significant.<br>
&gt;<br>&gt; Do you check for package build errors?<br>&gt;<br>&gt; -W<br>&gt;<br>&gt;<br>&gt; for (int i = 0; i &lt; facts.length; i++) {<br>&gt;&gt;        Object fact = facts[i];<br>&gt;&gt;        workingMemory.insert(fact);   // &lt;&lt;&lt;&lt;&lt; Exception, when multiple<br>
&gt;&gt; rule<br>&gt;&gt; files<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; rules-users mailing list<br>&gt; <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
&gt; <a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>&gt;<br>&gt;<br><br>--<br>
View this message in context: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.nabble.com/Problem-when-using-multiple-rule-files-%28Drools-5%29-tp24623347p24623763.html" target="_blank">http://www.nabble.com/Problem-when-using-multiple-rule-files-%28Drools-5%29-tp24623347p24623763.html</a><br>
Sent from the drools - user mailing list archive at Nabble.com.<br><br>_______________________________________________<br>rules-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote><br>