I'm far from an expert in the area of ClassLoaders, but it seems to me
the only solution is to load your tasks with the same loaderRef that is
used by the parent, if you can make no changes to the parent.

-----Original Message-----
From: Venkatesh Sangam [mailto:vsan...@gmail.com] 
Sent: Wednesday, November 03, 2010 11:44 AM
To: user@ant.apache.org
Subject: Re: antlib classloader issue

I have the following case that is resulting in classcastexception. Any
suggestion to fix this is really appreciated.

1. I have an ant build file parent.xml that has an antlib entry and also
has usage for the custom tasks defined in the antlib as follows:

     <taskdef resource="myco/anttasks/antlib.xml"
uri="antlib:myco.anttasks" loaderRef="myco.custom.tasks.loader">
        <classpath refid="custom.tasks.class.path"/>
     </taskdef>

     <custom:myCustomTypeDef id="my.task"
xmlns:custom="antlib:myco.anttasks">
     </custom:myCustomTypeDef>

The implementation details of myCustomTypeDef are in
myco/anttasks/antlib.xml

2. I have another ant build file child.xml that imports parent.xml and
defines its own custom tasks. These new custom tasks are an extension to
the
tasks already defined in the parent.xml, which means that I need the
class
path reference defined in "custom.tasks.class.path"

3. When I execute the new task in child.xml, I get a classcastexception
when referring to myCustomTypeDef. My code does not directly refer
to myCustomTypeDef, but the parent code that I am extending references
myCustomTypeDef.

4. The classes in the myco/anttasks/antlib.xml are loaded by a different
classloader than the taskdef in my child.xml and hence I cannot see that
class.

How do I resolve this issue? I cannot directly modify parent.xml. Only
child.xml is in my control. How do I make sure that the taskdef in
child.xml
are loaded by the same classloader loading the implementation defined in
parent antlib.xml

Thanks, Venkatesh

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to