ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominique Devienne <>
Subject RE: Classloader problem with Taskdef
Date Sat, 14 Dec 2002 18:04:45 GMT
This is also more of a discussion for ant-dev... My first question would be
why you're using your own class loader in the first place? Very often,
custom tasks/types should not bother about class loading issues, which are
sorted out using 'loaderef' in taskdef/typedef in the build file. Then
again, I know nothing of your particular case. --DD

-----Original Message-----
From: Maciej Zawadzki []
Sent: Saturday, December 14, 2002 11:35 AM
To: Ant Users List
Subject: Re: Classloader problem with Taskdef

I may have answered my own question.  I think that it is my task that 
needs to set the AntClassloader as the current thread context 
classloader, not the taskdef as I previously thought.  For some reason I 
though that the classpath used by the taskdef would carry over to the 
task, but I guess that is not the case (and that makes sense now :) ).



Maciej Zawadzki wrote:
> Hello,
> I am encountering a problem in the following scenario:
> I am using <taskdef> with a classpathref and lets say that the 
> classpathref pointed to by my taskdef contains the jar file MyJar.jar, 
> which contains MyTask.class and MyBaseClass.class as well as some other 
> classes (including a classloader).  Now, when my task runs, it uses its 
> own classloader to load class MySubClass.class (which extends 
> MyBaseClass) from some other location.  But, to load MySubClass.class, 
> my class loader needs to obtain a reference to MyBaseClass, which would 
> normally be no problem since it could get that probably from the parent 
> class loader.  But, when using Ant, I get a NoClassFoundError stating 
> that MyBaseClass is not found -- even though my class loader uses the 
> current thread context class loader as its parent.
> Now, it appears to me that the classloader that is used to load 
> MyJar.jar containing MyTask and MyBaseClass never sets itself as the 
> current thread context classloader and that is why my class loader can 
> not find any of those classes.  Am I right in this?
> After looking at the AntClassLoader and doing a search on all of Ant's 
> code base, I found that there is only one place where the AntClassLoader 
> is being set as the current thread context classloader -- and that is in 
> the JUnit task.  I'm not familiar enough with how the taskdef works 
> within Ant to feel comfortable with making code changes.  Thus, any help 
> here would be greatly appreciated.
> Thanks,
> --Maciej

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message