commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Kitching <skitch...@apache.org>
Subject Re: Commons digester does not work for me :(
Date Sun, 25 Sep 2005 03:43:14 GMT
On Thu, 2005-09-22 at 11:33 -0400, Vel Murugan wrote:
> 
> 
> 
> Hi,
> 
> I am getting the following error in jasper report in Jboss environment
> bundled with tomcat ..It is working fine in standalone Tomcat ....Please
> help me on this...
> 
> 2005-09-22 11:19:43,593 ERROR [org.apache.commons.digester.Digester] Body
> event threw error
> java.lang.IllegalAccessError: tried to access field
> org.apache.commons.digester.Digester.log from class
> org.apache.commons.digester.SetNestedPropertiesRule$AnyChildRule
>       at
> org.apache.commons.digester.SetNestedPropertiesRule$AnyChildRule.body(SetNestedPropertiesRule.java:393)
>       at org.apache.commons.digester.Rule.body(Rule.java:240)
>       at

This has been raised earlier:

http://marc.theaimsgroup.com/?l=jakarta-commons-user&m=112518309800581&w=2


The method Digester.log field was first introded in r132312 on jan 4
2002. At that time it was a protected field. Its access level has never
changed. Protected fields are, of course, accessable to subclasses
**and** to any class in the same package. So the SetNestedPropertiesRule
class and its nested classes should have access to that field without
problems.

See: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java

The only possibility I can think of is that SetNestedPropertiesRule is a
fairly recent class (first included in r132525 on 19 nov 2003; first
included in version 1.6). If you were running code in a j2ee framework
or similar, AND you were using parent-first classloading AND the version
in the parent classpath is earlier than 1.5 then:
* Digester will get loaded via parent classloader
* SetNestedPropertiesRule isn't in the parent classloader path so it
will be loaded via the child classloader
SetNestedPropertiesRule may then be treated as being "in a separate
package" (because it was loaded via a different classloader) and
therefore be denied access to Digester.log.

The above is only a guess. If you are using parent-first classloading
(which is a bloody stupid idea IMHO) then turn this off and see if the
problem is fixed. Or update the digester jar file in the parent
classpath to 1.6 or later.

Note: the META-INF/MANIFEST.MF file in the digester jar file will tell
you what the version is if the filename doesn't.

Regards,

Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message