[rules-users] Classloading error with AspectJ and Drools 5.2.0.Final

Steven Williams stevearoonie at gmail.com
Tue Jul 5 23:42:26 EDT 2011


Hi,

I have just upgraded to Drools 5.2.0.Final and am getting a weird error when
running unit tests.

   java.lang.NullPointerException

at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions(
ClassLoaderWeavingAdaptor.java:251)

at org.aspectj.weaver.loadtime.DefaultWeavingContext.getDefinitions(
DefaultWeavingContext.java:130)

at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(
ClassLoaderWeavingAdaptor.java:161)

at
org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(
Aj.java:271)

at
org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(
Aj.java:276)

at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:254)

at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:90)

at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(
ClassPreProcessorAgentAdapter.java:54)

at sun.instrument.TransformerManager.transform(TransformerManager.java:169)

at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365
)

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)

at java.lang.ClassLoader.defineClass(ClassLoader.java:616)

at org.drools.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(
JavaDialectRuntimeData.java:570)

at org.drools.util.CompositeClassLoader$CachingLoader.load(
CompositeClassLoader.java:258)

at org.drools.util.CompositeClassLoader$CachingLoader.load(
CompositeClassLoader.java:241)

at org.drools.util.CompositeClassLoader.loadClass(
CompositeClassLoader.java:88)

at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

at org.drools.rule.JavaDialectRuntimeData.wire(
JavaDialectRuntimeData.java:405)

at org.drools.rule.JavaDialectRuntimeData.wire(
JavaDialectRuntimeData.java:396)

at org.drools.rule.JavaDialectRuntimeData.onBeforeExecute(
JavaDialectRuntimeData.java:237)

at org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(
DialectRuntimeRegistry.java:132)

at org.drools.compiler.PackageBuilder.reloadAll(PackageBuilder.java:796)

at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:751)

at org.drools.compiler.PackageBuilder.addPackageFromDrl(
PackageBuilder.java:360)

at org.drools.compiler.PackageBuilder.addKnowledgeResource(
PackageBuilder.java:538)

at org.drools.builder.impl.KnowledgeBuilderImpl.add(
KnowledgeBuilderImpl.java:28)

at au.com.promedicus.rules.KnowledgeBaseBuilder.addPackagesFromList(
KnowledgeBaseBuilder.java:108)

at au.com.promedicus.rules.KnowledgeBaseBuilder.build(
KnowledgeBaseBuilder.java:69)

at au.com.promedicus.rules.KnowledgeBaseBuilder.build(
KnowledgeBaseBuilder.java:54)


I have traced the problem to org.drools.rule.
JavaDialectRuntimeData$PackageClassLoader.getResources. This returns null
whereas AspectJ expects it to at least return an empty enumeration - hence
the NPE. Interestingly the problem does not occur when running our server,
however we can't upgrade unless our unit tests pass and we can't easily turn
off aspectj for these.

regards
Steve
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110706/01ad2330/attachment.html 


More information about the rules-users mailing list