Details
-
Bug
-
Resolution: Done
-
Major
-
5.1.1.FINAL, 5.4.0.Final
-
None
Description
I am trying to load a "rules" JAR dynamically. This JAR contains a change-set.xml and all of its DRL files:
<?xml version="1.0" encoding="UTF-8"?> <change-set xmlns='http://drools.org/drools-5.0/change-set' xmlns:xs='http://www.w3.org/2001/XMLSchema-instance' xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd'> <add> <resource source='classpath:com/my/stuff/rules/Stuff.drl' type='DRL' /> </add> </change-set>
I am loading the JAR dynamically via URLClassLoader and successfully creating the ChangeSet resource:
Resource changeSet = ResourceFactory.newClassPathResource("change-set.xml", classLoader);
However, it then always explodes when I try to add the resource to the KnowledgeBuilder, complaining that "'com/my/stuff/rules/Stuff.drl' cannot be opened because it does not exist".
I am suspecting that the KnowledgeBuilder is not using my class loader to load Stuff.drl, despite me passing the correct class loader in via KnowledgeBuilderConfiguration. (And the "changeset:" handling in org.drools.xml.changeset.ResourceHandler would seem to support my theory.)