[rules-users] OSGI, classloading, and imports in KnowledgeBuilder

Simon Thum simon.thum at gmx.de
Wed Aug 12 08:39:12 EDT 2009


Lasse.Wallentin at apcc.com wrote:
>>> Can anyone sketch a setup so that I can use Drools from within an 
> Eclipse 
>>> plugin?
>> I've got it running. You need to make sure your classloaders are the
>> right ones.
>> I use the
>> new PackageBuilderConfiguration(Classloader, Properties)
>>
>> ctor (if you're setting CL later, Properties may fail to apply) and
>>
>> new RuleBaseConfiguration(Classloader)
>>
>> respectively. I guess the knowledge-based apis have matching ctors. I
>> use the classloader of my project, which imports the needed drools
>> namespaces. That last part may need some time, but I's doable.
>>
> 
> I have tried the following:
> 
> KnowledgeBuilderConfiguration builderConfiguration = 
> KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, 
> getClass().getClassLoader());
> KnowledgeBuilder kbuilder = 
> KnowledgeBuilderFactory.newKnowledgeBuilder(builderConfiguration);
> Resource pathResource = ResourceFactory.newClassPathResource(path, 
> getClass());
> kbuilder.add(pathResource, ResourceType.DTABLE, dtableconfiguration);
> 
> However it still fails ...
> 
> Does this compare to what you are doing? Are you able to do DecisionTables 
> as well?
Roughly; I use neither knowledge API nor tables. However I guess you're
not importing org.drools.base.extractors, so your classloader won't let
drools load that class. There was a heap of drools stuff I've never
heard of but had to import before it worked.

HTH,

Simon



More information about the rules-users mailing list