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

Reply via email to