You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2004/10/29 19:40:47 UTC

DO NOT REPLY [Bug 31969] New: - Mail tasks depends on Java verifier

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=31969>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=31969

Mail tasks depends on Java verifier

           Summary: Mail tasks depends on Java verifier
           Product: Ant
           Version: 1.6.2
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: Matthew.Hawkins@oracle.com


When the Mail task is used with the encoding set to "auto", it attempts to
determine if MIME is available by calling Class.forName() on the
org.apache.tools.ant.taskdefs.email.MimeMailer class.  If this succeeds, it
assumes MIME mail is available and tries to use it.  However, the success of
this operation will depend on the presence of the Java verifier.  This code has
a "catch (Throwable e)".  When the verifier checks the MimeMailer class, it will
also check for the dependancy classes javax.mail.MessagingException and
javax.activation.DataSource classes.  These will only be found if the mail.jar
and activation.jar are on the classpath.  If they are not, a VerifyError is
thrown and the catch clause will fire.  It will then default to the UU encoding,
and the build will succeed, which is the correct behavior for the auto encoding.

However, if the verifier is not being used in the VM, then the Class.forName()
will check for the existance of the MimeMail class, but not the
MessagingException and DataSource classes.  If the mail.jar or activation.jar is
missing from the classpath, no error is thrown, the catch clause will not fire,
and it will continue on its way assuming that it should use MIME.  Later, it
will fail with a NoClassDefFoundError on the MessagingException and DataSource
classes and the Ant build will fail.

To reproduce: 

1) Set your ANT_OPTS environment variable to "-Xverify:none"
2) Try to run an Ant buildfile using the mail task with encoding set to "auto"
3) You will see a NoClassDefFoundError and the build fails

This is a problem for IDE's, which may not be running with the verifier.  If
they try to run Ant in the same VM as the IDE, the mail task will fail.

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