Hi,
I was supprised that the <taskdef> you described worked for scp, I think that you have removed the ant-jsch.jar from from $ANT_HOME/lib.
Yes as the classloader will find the ant-jsch.jar iin $ANT_HOME/lib and try to load the jsch code from there. I moved it to a different location and <csp> worked fine - I expected the same behaviour with <mail>, but instead I've had some problems.
I tryed the following without removing ant-jsch.jar from $ANT_HOME/lib and got the expected build failure. build.xml: <project default="x"> <target name="x"> <property name="src.tools.dir" location="${user.home}/apps"/> <path id="jsch.path"> <pathelement location="${src.tools.dir}/jsch/ant-jsch.jar"/> <pathelement location="${src.tools.dir}/jsch/jsch-0.1.33.jar"/> </path> <taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="jsch.path"/> <scp hello="world"/> </target> </project> result: BUILD FAILED /work/reilly/learning/a/jsch/build.xml:11: taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.Scp cannot be found: com/jcraft/jsch/UserInfo
They are for <taskdef>. In ant1.7.0 only junit has been coded to allow the dependent classes to be defined in an embedded classpath. In ant1.7.1 this has been extended to the <script> family. The code involved uses classloader tricks that are not too easy to generalize to the other class dependent optional tasks.
It may be worth looking at though. It's strange to have one task work as expected and another break when configuring them in the same way. Principle of least surprise and all that
See http://ant.apache.org/faq.html#delegating-classloader for a description of the problem.
I spent a while yesterday looking at that and reviewing what I could do about it - I thought that since the scp task worked my moving all the dependent jars and re-defining it, then the other tasks would too.
In my build files, I use the excellent [antlib:net.jtools.classloadertask]classloader task: from http://enitsys.sourceforge.net/ant-classloadertask/ <typedef uri="antlib:net.jtools.classloadertask" resource="net/jtools/classloadertask/antlib.xml"> <classpath> <fileset dir="${user.home}/tools/ant-classloader" includes="*.jar"/> </classpath> </typedef> <cl:classloader loader="project"> <classpath> <fileset dir="${src.tools.dir}/jsch/" includes="js*.jar"/> </classpath> </cl:classloader> <scp hello="world"/>
Thanks Peter, unless there's another work-around I will have to follow your lead and use the same classloader task. Kev --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]