Hide Forgot
It is possible to create a KieBaseConfiguartion with an user provided ClassLoader from the KieServices. This is especially useful in OSGi environment, however when you do so it also tries to create a default configuration without using the provided classloader causing an Exception like the following: java.lang.ExceptionInInitializerError at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieBaseConfiguration(KieServicesImpl.java:153) at de.hs_rm.cs.vs.drools.reasoner.base.AbstractReasoner.compileRules(AbstractReasoner.java:149) at de.hs_rm.cs.vs.owl.drools.reasoner.Reasoner.activate(Reasoner.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236) at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37) at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613) at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496) at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149) at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:239) at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:119) at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1518) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:261) at org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:328) at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:158) at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:113) at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:261) at org.apache.felix.scr.impl.Activator.loadAllComponents(Activator.java:199) at org.apache.felix.scr.impl.Activator.start(Activator.java:108) at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) at org.apache.felix.framework.Felix.activateBundle(Felix.java:2146) at org.apache.felix.framework.Felix.startBundle(Felix.java:2064) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955) at aQute.launcher.Launcher.update(Launcher.java:378) at aQute.launcher.Launcher.activate(Launcher.java:303) at aQute.launcher.Launcher.run(Launcher.java:193) at aQute.launcher.Launcher.main(Launcher.java:89) Caused by: java.lang.IllegalArgumentException: conflict Resolver 'org.drools.core.conflict.DepthConflictResolver' not found at org.drools.core.RuleBaseConfiguration.determineConflictResolver(RuleBaseConfiguration.java:866) at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:457) at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:413) at org.drools.core.RuleBaseConfiguration.<init>(RuleBaseConfiguration.java:264) at org.drools.core.RuleBaseConfiguration.<clinit>(RuleBaseConfiguration.java:174) ... 31 more
Fixed by https://github.com/droolsjbpm/drools/commit/1481152aa
The verification of this BZ is blocked by BZ 1042867.
Found a workaround for BZ 1042867 (created a simple OSGi bundle with custom BundleActivator which creates a KieBase with custom classloader). Verified on BRMS 6.0.0 ER5.