ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antoine Levy-Lambert <anto...@gmx.de>
Subject Re: Mail task with mail.jar & activation.jar out of lib folder
Date Wed, 19 Jan 2011 23:51:27 GMT
Adding for clarity that the reason why the classloader task helps in
this case is that mail.jar and activation.jar contain factory classes
which cannot be loaded from the loader of the mail task directly if
mail.jar and activation.jar were not in $ANT_HOME/lib or another
directory picked up at startup.

In a similar fashion, if you are using the <sql/> task, you have to
either put your JDBC driver in the directories from which ant loads all
the jars at startup or add the JDBC driver using the classloader task.

Regards,

Antoine

On 1/19/11 3:36 PM, Peter Reilly wrote:
> url of:
>
> http://enitsys.sourceforge.net/ant-classloadertask/
>
> Peter
>
>
> On Wed, Jan 19, 2011 at 8:16 PM, Antoine Levy-Lambert <antoine@gmx.de> wrote:
>> Hello Patrick,
>>
>> it is possible to do this using the classloader task of jtools
>>
>> <taskdef name="classloadertask"
>> classname="org.apache.tools.ant.taskdefs.ClassloaderTask">
>> <classpath>
>> <fileset dir="${ivy.lib.dir}/classloadertask"/>
>> </classpath>
>> </taskdef>
>> <path id="all.mail.cp">
>> <fileset dir="${ivy.lib.dir}/mail">
>> <include name="*.jar"/>
>> </fileset>
>> </path>
>> <classloadertask classpathRef="all.mail.cp" loader="thread"/>
>>
>> here is the snippet of my ivy.xml with the dependencies
>>
>> <dependency org="sun" name="javamail" rev="1.3.3" conf="mail->default"/>
>> <dependency org="sun" name="jaf" rev="1.1.1" conf="mail->default"/>
>> <dependency org="sourceforge" name="jtools" rev="1.0-RC2"
>> conf="classloadertask->default">
>> <artifact name="ant-classloadertask" type="jar"/>
>> </dependency>
>>
>> so you do not need to redefine the mail task but put artificially
>> activation.jar and mail.jar on the thread class loader.
>>
>> Regards,
>>
>> Antoine
>>
>>
>> On 1/19/2011 4:31 AM, Patrick Martin wrote:
>>> Hello,
>>>
>>> Is it possible to use the<mail>  task without having activation.jar
>>> and mail.jar in the ant lib folder?
>>>
>>> I tried to redefine the mail task this way:
>>>
>>> <taskdef name="mymail"
>>> classname="org.apache.tools.ant.taskdefs.email.MimeMailer">
>>>        <classpath>
>>>                <pathelement location="${ant.home}/lib/ant-javamail.jar" />
>>>  <!--
>>> same with and without this line -->
>>>                <pathelement location="a/mail.jar" />
>>>                <pathelement location="a/activation.jar" />
>>>        </classpath>
>>> </taskdef>
>>>
>>> But it did not work. I keep on getting the following error:
>>>
>>> D:\tmp\build.xml:7: taskdef A class needed by class
>>> org.apache.tools.ant.taskdefs.email.MimeMailer cannot be found:
>>> javax/mail/MessagingException
>>>  using the classloader AntClassLoader[D:\tmp\a\activation.jar]
>>>         at
>>> org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:627)
>>>         at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:239)
>>>         at
>>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>         at
>>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
>>>         at org.apache.tools.ant.Task.perform(Task.java:348)
>>>         at org.apache.tools.ant.Target.execute(Target.java:390)
>>>         at org.apache.tools.ant.Target.performTasks(Target.java:411)
>>>         at
>>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
>>>         at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
>>>         at
>>> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>>>         at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
>>>         at org.apache.tools.ant.Main.runBuild(Main.java:809)
>>>         at org.apache.tools.ant.Main.startAnt(Main.java:217)
>>>         at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
>>>         at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
>>> Caused by: java.lang.NoClassDefFoundError: javax/mail/MessagingException
>>>         at java.lang.Class.forName0(Native Method)
>>>         at java.lang.Class.forName(Class.java:242)
>>>         at
>>> org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:594)
>>>         ... 18 more
>>>
>>> I am using ant 1.8.2.
>>>
>>> Thanks,
>>>
>>> Patrick
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>>> For additional commands, e-mail: user-help@ant.apache.org
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>> For additional commands, e-mail: user-help@ant.apache.org
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>


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


Mime
View raw message