[rules-users] IllegalAccessError in shadow classes

Edson Tirelli tirelli at post.com
Tue Feb 19 15:11:37 EST 2008


   Forgot to say that we are doing an effort to completely remove shadow
proxies in the next major version.

2008/2/19, Edson Tirelli <tirelli at post.com>:
>
>
>    Drools tries to create the ShadowProxy. The reason is that it does not
> know about the implementation... it just knows it is a Map and as so, it
> must be shadowed. Problem is that SingletonMap is either  final or does not
> have a default constructor.
>    My recommendation, besides opening a JIRA for this, is avoid inserting
> collections/maps directly as facts. The semantic for such facts is not
> clearly defined and it may cause undesired behavior.
>
>    []s
>    Edson
>
> 2008/2/19, Godmar Back <godmar at gmail.com>:
> >
> > Hi,
> >
> > usings Drools 4.0.4 and MVEL 1.4, this simple rule:
> > ---
> > package test;
> >
> > import java.util.Collections;
> >
> > dialect "mvel"
> >
> > rule "Rule #1"
> > when
> > then
> >     insert(Collections.singletonMap("content", "hello"));
> > end
> > --
> >
> > produces:
> > java.lang.IllegalAccessError: class
> > org.drools.shadow.java.util.Collections$SingletonMapShadowProxy cannot
> > access its superclass java.util.Collections$SingletonMap
> >         at java.lang.ClassLoader.defineClass1(Native Method)
> >         at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
> >         at org.drools.rule.MapBackedClassLoader.fastFindClass(
> > MapBackedClassLoader.java:60)
> >         at org.drools.rule.MapBackedClassLoader.loadClass(
> > MapBackedClassLoader.java:79)
> >         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >         at
> > org.drools.reteoo.Rete$ClassObjectTypeConf.loadOrGenerateProxy(Rete.java
> > :547)
> >         at
> > org.drools.reteoo.Rete$ClassObjectTypeConf.defineShadowProxyData(
> > Rete.java:494)
> >         at org.drools.reteoo.Rete$ClassObjectTypeConf.<init>(Rete.java
> > :461)
> >         at org.drools.reteoo.Rete.assertObject(Rete.java:152)
> >         at org.drools.reteoo.ReteooRuleBase.assertObject(
> > ReteooRuleBase.java:192)
> >         at org.drools.reteoo.ReteooWorkingMemory.doInsert(
> > ReteooWorkingMemory.java:71)
> >         at org.drools.common.AbstractWorkingMemory.insert(
> > AbstractWorkingMemory.java:909)
> >         at org.drools.common.AbstractWorkingMemory.insert(
> > AbstractWorkingMemory.java:881)
> >         at org.drools.base.DefaultKnowledgeHelper.insert(
> > DefaultKnowledgeHelper.java:67)
> >         at org.drools.base.DefaultKnowledgeHelper.insert(
> > DefaultKnowledgeHelper.java:61)
> >
> >
> > It's not clear to me why Drools creates Proxies for such classes as
> > java.util.Collections, or does MVEL do it?
> >
> > - Godmar
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
>
>
>
> --
>   Edson Tirelli
>   JBoss Drools Core Development
>   Office: +55 11 3529-6000
>   Mobile: +55 11 9287-5646
>   JBoss, a division of Red Hat @ www.jboss.com




-- 
  Edson Tirelli
  JBoss Drools Core Development
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080219/13c6904d/attachment.html 


More information about the rules-users mailing list