cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Torsten Curdt <>
Subject Re: Problem with ReloadingClassLoader
Date Fri, 11 Nov 2005 09:16:53 GMT

On 11.11.2005, at 09:45, Reinhard Poetz wrote:

> Torsten Curdt wrote:
>>> I have a nasty error that I can't track down. I'm using the   
>>> ReloadingClassloader of trunk and include it with following code:
>>> <map:classloader>
>>>   <class-dir src="../blah"/>
>>> </map:classloader>
>>> I declare a couple of components like generators and actions.  
>>> Using  an action works as it has been doing for months but since  
>>> an  upgrade to the latest SVN I get following error when  
>>> declaring a  custom generator:
>> You can reproduce it all the time only with generators??
> yep, I'm using Eclipse 3.1 and the class-dir points to the  
> porject's output directory.

And reloading actions still works?

>>> The HTTP response is:
>>> HTTP ERROR: 500 my.CustomGenerator (Bad index in constant pool.)
>>> At the console following stacktrace appears:
>>> java.lang.ClassFormatError: my.CustomGenerator (Bad ind
>>> ex in constant pool.)
>>>         at java.lang.ClassLoader.defineClass0(Native Method)
>>>         at java.lang.ClassLoader.defineClass(
>>>         at java.lang.ClassLoader.defineClass(
>>>         at   
>>> org.apache.cocoon.components.classloader.ReloadingClassLoaderFactory 
>>> $
>>> DefaultClassLoader.fastFindClass( 
>>> 182)
>> Now that's interesting :-/ ...with a basic "class-dir" there should
>> be no rewriting that could possibly cause this.
>>> BTW, currently ReloadingClassLoaderFactory doesn't work out of the
>>> box as it isn't declared in any xconf
>> ...but it's declared in the cocoon.roles - that should work fine
> you mean 
> apache/cocoon/cocoon.roles? Can't find it there. Only the  
> DefaultClassLoaderFactory is declared.

Doh! - I did not want to change the default behavior.
So I did override it in the xconf


In order to debug this I'd suggest to print out the size of the  
byte[] and then compare what's on the disk.


View raw message