[rules-users] classLoader issue...

Jason Davidson jljdavidson at gmail.com
Mon Jul 13 19:00:32 EDT 2009


I'm getting this error message too.  I'm running Drools 5.0.1 as a  
bundle within an OSGi container.  Like the parent post indicates it  
worked with Drools 4.0.7 and it only happens when I put constraints on  
fact fields.

Here's my stack:
Root exception:
java.lang.NoClassDefFoundError: org/drools/base/extractors/ 
BaseObjectClassFieldReader
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
	at org.drools.base.ClassFieldAccessorCache 
$ByteArrayClassLoader.defineClass(ClassFieldAccessorCache.java:367)
	at  
org 
.drools 
.base 
.ClassFieldAccessorFactory 
.getClassFieldReader(ClassFieldAccessorFactory.java:135)
	at org.drools.base.ClassFieldAccessorCache 
$CacheEntry.getReadAccessor(ClassFieldAccessorCache.java:315)
	at  
org 
.drools 
.base 
.ClassFieldAccessorCache.getReadAcessor(ClassFieldAccessorCache.java: 
245)
	at  
org 
.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java: 
379)
	at  
org 
.drools 
.base.ClassFieldAccessorStore.merge(ClassFieldAccessorStore.java:270)
	at  
org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java: 
466)
	at org.drools.reteoo.ReteooRuleBase.addPackage(ReteooRuleBase.java:388)
	at com.cjs.core.rules.RulesEngine.startEngine(RulesEngine.java:102)
	at com.cjs.core.rules.RulesEngine.<init>(RulesEngine.java:44)
	at com.cjs.core.rules.RulesEngine.getInstance(RulesEngine.java:58)
	at  
com 
.cjs 
.core 
.rules 
.RulesEngineServiceFactory.getEngine(RulesEngineServiceFactory.java:22)
	at com.cjs.hazel.rules.test.Activator.start(Activator.java:21)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl 
$1.run(BundleContextImpl.java:782)
	at java.security.AccessController.doPrivileged(Native Method)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java: 
773)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal.core.BundleContextImpl.start(BundleContextImpl.java:754)
	at  
org 
.eclipse 
.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java: 
352)
	at  
org 
.eclipse 
.osgi 
.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:370)
	at  
org 
.eclipse 
.osgi.framework.internal.core.Framework.resumeBundle(Framework.java: 
1068)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java: 
557)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:464)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal 
.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:248)
	at  
org 
.eclipse 
.osgi 
.framework 
.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java: 
445)
	at  
org 
.eclipse 
.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java: 
220)
	at org.eclipse.osgi.framework.eventmgr.EventManager 
$EventThread.run(EventManager.java:330)

> Thanks for your answer !
>
> My configuration seems correct to me, I have all new jars in the
> classpath (the ones indicated in the file README-DEPENDENCIES.txt at  
> the
> SVN trunk). I checked them all looking after another
> BaseObjectClassFieldReader class, but only drools-core contains it.
>
> By the way, rules are well compiled and executed, this issue only
> happens when I put constraints on fields. So I think if drools-core  
> was
> not in the classpath, nothing would work at all...
>
> Le mercredi 01 juillet 2009 à 08:46 -0400, Edson Tirelli a écrit :
> >
> >    It seems to me that the problem is not with the classloader of  
> your
> > classes, but the classpath of the drools jars. Are you sure you
> > updated and have all the required new jars in your classpath?  
> Drools 5
> > has a few new jars, like drools-api, that need to be available.  
> Also,
> > check if there are any older jar still in the classpath that might  
> be
> > clashing with the new jars.
> >
> >    []s
> >    Edson
> >
> > 2009/7/1 Julien Nicoulaud <julien.nicoulaud at bull.net>
> >         Hi, I'm migrating my system from Drools 4.0.7 to Drools  
> 5.1.0.
> >         Now when I try to compile rules that check fact fields, I  
> get
> >         the
> >         following exception:
> >
> >                ERROR: EventDispatcher: Error during dispatch.
> >                (java.lang.NoClassDefFoundError:
> >                org/drools/base/extractors/ 
> BaseObjectClassFieldReader)
> >                java.lang.NoClassDefFoundError:
> >                org/drools/base/extractors/BaseObjectClassFieldReader
> >
> >                ( http://paste2.org/p/296380 )
> >
> >
> >         It seems the classloaders I pass to the configurations are  
> not
> >         taken in
> >         account... I get exactly the same error if I do not specify
> >         the
> >         classloaders. Here is the code:
> >                KnowledgeBuilderConfiguration kBuilderCfg =
> >
> >           
> KnowledgeBuilderFactory 
> .newKnowledgeBuilderConfiguration(null,classLoader);
> >                KnowledgeBuilder knowledgeBuilder =
> >
> >          KnowledgeBuilderFactory.newKnowledgeBuilder(kBuilderCfg);
> >
> >                KnowledgeBaseConfiguration kbaseConfig =
> >
> >           
> KnowledgeBaseFactory 
> .newKnowledgeBaseConfiguration(null,multiBundleClassLoader);
> >                kbaseConfig.setOption(EventProcessingOption.STREAM);
> >                knowledgeBase =
> >                KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);
> >
> >         On Drools 4, we did exactly the same with PackageBuilder
> >         instead of
> >         KnowledgeBuilder and RuleBase for KnowledgeBase. So the
> >         classloaders I
> >         pass are the good ones... Is there some trick ?
> >
> >         Thanks for any help !
> >
> >         _______________________________________________
> >         rules-users mailing list
> >         rules-users at lists.jboss.org
> >         https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
> > --
> >  Edson Tirelli
> >  JBoss Drools Core Development
> >  JBoss by Red Hat @ www.jboss.com
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users





More information about the rules-users mailing list