<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi,<br>
    <br>
    While trying to get some integration tests of the Maven Drools
    Plugin green when used with Drools 5.2.0.Final and 5.3.0.Beta1, I'm
    getting weird behaviour of the newer Drools version when it comes to
    deserializing KnowledgePackages.<br>
    <br>
    What do I do in the code?<br>
    - compile three *.drl files (see below)<br>
    - serialize the resulting KnowledgePackages using
    DroolsStreamUtils.streamOut(new FileOutputStream(outputFile),
    knowledgeBuilder.getKnowledgePackages(), false) from within the
    plugin (see [1], [2])<br>
    - de-serialize the knowledge packages using
    DroolsStreamUtils.streamIn(new FileInputStream(file)) in a TestNG
    test [3], using [4]<br>
    - I get java.lang.ClassNotFoundException for a declared data type:<br>
    <br>
    java.lang.ClassNotFoundException: model.Age<br>
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)<br>
        at java.security.AccessController.doPrivileged(Native Method)<br>
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)<br>
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)<br>
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)<br>
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)<br>
        at java.lang.Class.forName0(Native Method)<br>
        at java.lang.Class.forName(Class.java:247)<br>
        at
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)<br>
        at
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)<br>
        at
    java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)<br>
        at
    java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)<br>
    <br>
    Strangely enough, the same code works well if I switch to Drools
    5.1.1. What changed between 5.1.1 and 5.2.0.Final that might cause
    this effect? Might I be doing something wrong using
    DroolsStreamUtils?<br>
    <br>
    Would be happy about any hints.<br>
    <br>
    Thank you in advance.<br>
    <br>
    Here are the three input files, which get compiled exactly in this
    order:<br>
    <br>
    1) Person.drl<br>
    <br>
    package model;<br>
    <br>
    declare Person<br>
      name: String<br>
    end<br>
    <br>
    <br>
    2) Age.drl<br>
    <br>
    package model;<br>
    <br>
    declare Age<br>
      person: Person<br>
      age: Integer<br>
    end<br>
    <br>
    <br>
    3) minimum-age.drl:<br>
    <br>
    package rules;<br>
    <br>
    dialect "mvel"<br>
    <br>
    import model.Person;<br>
    import model.Age;<br>
    <br>
    rule "check minimum age"<br>
      when<br>
        Age( $person: person, age &lt; 18 )<br>
      then<br>
        insertLogical("TOO YOUNG: " + $person.name )<br>
    end<br>
    <br>
    <br>
    Best regards<br>
    <br>
    Ansgar<br>
    <br>
    [1] <a
href="https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/mojos/src/main/java/de/lightful/maven/plugins/drools/mojos/CompileMojo.java">https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/mojos/src/main/java/de/lightful/maven/plugins/drools/mojos/CompileMojo.java</a><br>
    [2] <a
href="https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/mojos/src/main/java/de/lightful/maven/plugins/drools/impl/OutputFileWriter.java">https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/mojos/src/main/java/de/lightful/maven/plugins/drools/impl/OutputFileWriter.java</a><br>
    <br>
    [3] <a
href="https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/generic-integration-test-bundle/src/test/java/de/lightful/maven/plugins/drools/integrationtests/CanPerformMultiplePassesTest.java">https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/generic-integration-test-bundle/src/test/java/de/lightful/maven/plugins/drools/integrationtests/CanPerformMultiplePassesTest.java</a><br>
    [4] <a
href="https://github.com/maven-drools/plugin.knowledge-io/blob/a89bcf581d75b2ac8dfd55122c140568dbb8756a/src/main/java/de/lightful/maven/plugins/drools/knowledgeio/KnowledgePackageFile.java">https://github.com/maven-drools/plugin.knowledge-io/blob/a89bcf581d75b2ac8dfd55122c140568dbb8756a/src/main/java/de/lightful/maven/plugins/drools/knowledgeio/KnowledgePackageFile.java</a><a
href="https://github.com/maven-drools/plugin.maven-drools-plugin/blob/57c77fce26ceac41256e7f70c4e4daa2f411de4f/mojos/src/main/java/de/lightful/maven/plugins/drools/mojos/CompileMojo.java"></a>
  </body>
</html>