Java Mailing List Archive

http://www.ant-tasks.com/

Apache Ant Archive

» Ant Users List
» Ant Developers List
Problem with dual classloader.

Problem with dual classloader.

2005-05-25       - By Siwiec, Tomasz
Reply:     1     2     3     4  

Guys,
I have my own task and collection implemented and I use it like that:
   <taskdef name="myTask" classname="com...MyTask"
classpathref="std.classpath" loaderref="myTask"/>
   <typedef name="download_files" classname="com.....AntFileInfoSet"
classpathref="std.classpath" loaderref="myTask"/>
   <typedef name="file" classname="com.....AntFileInfo"
classpathref="std.classpath" loaderref="myTask"/>
   ...
   <myTask .......>        
    <download_files id="fl.flieInfos">
              <file name="xxx" .../>
              <file name="xxx" .../>
           </download_files>
   </myTask>
   ...

My task and collection jar file is located at std.classpath. The problem
is the AntFileInfoSet class is loaded by different classloader then
AnFileInfoSet class defined by section <download_files/>. In that case I
always get ClassCastException doing casting in AntFileInfoSet:
   public List getAntFileInfos() {
       if (refid != null) {
           return ((AntFileInfoSet)
getProject().getReference(refid)).getAntFileInfos(); !!!!!!
       } else {
           return antFileInfos;
       }
   }

In case I copy my jar file to ANT_HOME\lib directory and then run ant,
everything is ok as only one classloader is used.
As you can see I use loaderref="myTask" property but it doesn't help.
Can you help me?
Thx,
Tomek


©2008 ant-tasks.com - Jax Systems, LLC, U.S.A.