I have done the following:

- Created a new Project in Eclipse, "Plug-in from existing jar archives" : added the .jar files of the lib directory in org.drools.eclipse-5.1.0.SNAPSHOT.zip.
- Created a new project: droolstest, based on the example code in SimpleOsgiTest.
- This is the code:

        @SuppressWarnings("unchecked")
        public void testCompiler() throws Exception {       
            ServiceReference serviceRef = bundleContext.getServiceReference( ServiceRegistry.class.getName() );
            ServiceRegistry registry = (ServiceRegistry) bundleContext.getService( serviceRef );

            KnowledgeBuilderFactoryService knowledgeBuilderFactoryService = registry.get( KnowledgeBuilderFactoryService.class );
           
            KnowledgeBaseFactoryService knowledgeBaseFactoryService = registry.get( KnowledgeBaseFactoryService.class );
            ResourceFactoryService resourceFactoryService = registry.get( ResourceFactoryService.class );

            String str = "";
            str += "package org.test\n";
            str += "import org.test.Person\n";
            str += "global java.util.List list\n";
            str += "rule rule1\n";
            str += "when\n";
            str += "    $p : Person( age > 30 )\n";
            str += "then\n";
            str += "    list.add($p);\n";
            str += "end\n";

            KnowledgeBuilderConfiguration kbConf = knowledgeBuilderFactoryService.newKnowledgeBuilderConfiguration( null,
                                                                                                                    getClass().getClassLoader() );

            KnowledgeBuilder kbuilder = knowledgeBuilderFactoryService.newKnowledgeBuilder( kbConf );
            ResourceFactoryService resource = resourceFactoryService;
            kbuilder.add( resource.newByteArrayResource( str.getBytes() ),
                          ResourceType.DRL );

            if ( kbuilder.hasErrors() ) {
                System.out.println( kbuilder.getErrors() );
                throw new RuntimeException( kbuilder.getErrors().toString() );
            }

            KnowledgeBaseConfiguration kbaseConf = knowledgeBaseFactoryService.newKnowledgeBaseConfiguration( null,
                                                                                                              getClass().getClassLoader() );

            KnowledgeBase kbase = knowledgeBaseFactoryService.newKnowledgeBase( kbaseConf );
            kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
            StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
            List list = new ArrayList();
            ksession.setGlobal( "list",
                                list );

            ksession.insert( new Person( "name",
                                         34 ) );

            ksession.fireAllRules();
            ksession.dispose();


        }
       
        public class Person
        {
            private String name;
            private int age;
           
       
            public Person(String name, int age)
            {
                this.name = name;
                this.age = age;
            }
        }

The other methods work fine. I then added the following packages to my dependencies in the manifest:

Import-Package: org.drools,
 org.drools.builder,
 org.drools.builder.impl,
 org.drools.io,
 org.drools.rule,
 org.drools.rule.builder,
 org.drools.runtime,
 org.drools.runtime.rule,
 org.drools.util,
 org.drools.vsm;version="5.1.0.SNAPSHOT",
 org.osgi.framework;version="1.5.0"

However, when I run I get this error:
Testing compiler
org.osgi.framework.BundleException: Activator start error in bundle droolstest [2].
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1751)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1622)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:915)
    at org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:114)
    at org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:286)
    at org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:184)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Unable to instantiate service for Class 'org.drools.builder.KnowledgeBuilderFactoryService'
    at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:157)
    at droolstest.Activator$SimpleOsgiTest.testCompiler(Activator.java:79)
    at droolstest.Activator.start(Activator.java:44)
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:639)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1700)
    ... 6 more
Caused by: java.lang.ClassCastException
    at java.lang.Class.cast(Unknown Source)
    at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:155)
    ... 10 more
java.lang.IllegalArgumentException: Unable to instantiate service for Class 'org.drools.builder.KnowledgeBuilderFactoryService'
->

The registry is not null. He just can't seem to find this service. Allthough the drools project with all bundles of the lib directory in org.drools.eclipse-5.1.0.SNAPSHOT.zip. are installed and started. (this should register the service I believe)

These issues have been driving me crazy. :-(

Kind regards

Aerv