title: DCH class error with JavaMail
body: <p>I'm attempting to set up a simple logging test with JavaMail in Java EE 6, using the jar files provided with Glassfish 3.1.  There seems to be a wealth of questions out there on this subject, but I haven't found any answers that have helped yet.  My test code looks like this:</p>
  
  <pre><code>import java.util.logging.Logger;
  
  public class MyClass {
    private static final Logger LOGGER = Logger.getLogger("MyClass");
  
    public static void main(String[] args) {
      LOGGER.severe("This is a test");
    }
  }
  </code></pre>
  
  <p>My logging.properties file contains this:</p>
  
  <pre><code>com.sun.mail.util.logging.MailHandler.mail.smtp.host={my mail hub FQDN}
  com.sun.mail.util.logging.MailHandler.mail.smtp.port=25
  com.sun.mail.util.logging.MailHandler.mail.to={me}
  com.sun.mail.util.logging.MailHandler.mail.from={support address}
  com.sun.mail.util.logging.MailHandler.level=WARNING
  com.sun.mail.util.logging.MailHandler.verify=local
  com.sun.mail.util.logging.MailHandler.subject=Application Error
  com.sun.mail.util.logging.MailHandler.formatter=java.util.logging.SimpleFormatter
  </code></pre>
  
  <p>I build the class using:</p>
  
  <pre><code>javac -cp $AS_INSTALL/glassfish/modules/javax.mail.jar:$AS_INSTALL/install/lib/external/jaxb/activation.jar:. MyClass.java
  </code></pre>
  
  <p>Then I run the program using:</p>
  
  <pre><code>java -cp $AS_INSTALL/glassfish/modules/javax.mail.jar:$AS_INSTALL/install/lib/external/jaxb/activation.jar:. -Djava.util.logging.config.file=logging.properties MyClass
  </code></pre>
  
  <p>This results in the following error:</p>
  
  <pre><code>Sep 22, 2011 4:19:25 PM MyClass main
  SEVERE: This is a test
  java.util.logging.ErrorManager: 3: SEVERE: no object DCH for MIME type multipart/mixed;
          boundary="----=_Part_1_26867996.1316722766145"
  javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
          boundary="----=_Part_1_26867996.1316722766145"
          at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
          at javax.activation.DataHandler.writeTo(DataHandler.java:302)
          at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1476)
          at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1772)
          at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1748)
          at com.sun.mail.util.logging.MailHandler.toRawString(MailHandler.java:2196)
          at com.sun.mail.util.logging.MailHandler.send(MailHandler.java:1597)
          at com.sun.mail.util.logging.MailHandler.close(MailHandler.java:552)
          at java.util.logging.LogManager.resetLogger(LogManager.java:693)
          at java.util.logging.LogManager.reset(LogManager.java:676)
          at java.util.logging.LogManager$Cleaner.run(LogManager.java:221)
  
  javax.mail.MessagingException: IOException while sending message;
    nested exception is:
          javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
          boundary="----=_Part_1_26867996.1316722766145"
          at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1141)
          at javax.mail.Transport.send0(Transport.java:195)
          at javax.mail.Transport.send(Transport.java:124)
          at com.sun.mail.util.logging.MailHandler.send(MailHandler.java:1594)
          at com.sun.mail.util.logging.MailHandler.close(MailHandler.java:552)
          at java.util.logging.LogManager.resetLogger(LogManager.java:693)
          at java.util.logging.LogManager.reset(LogManager.java:676)
          at java.util.logging.LogManager$Cleaner.run(LogManager.java:221)
  Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
          boundary="----=_Part_1_26867996.1316722766145"
          at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
          at javax.activation.DataHandler.writeTo(DataHandler.java:302)
          at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1476)
          at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1772)
          at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1099)
          ... 7 more
  </code></pre>
  
  <p>I've verified that my javax.mail.jar file contains the multipart handler:</p>
  
  <pre><code>unzip -l $AS_INSTALL/glassfish/modules/javax.mail.jar | grep multipart
       2617  01-14-2011 15:37   com/sun/mail/handlers/multipart_mixed.class
  </code></pre>
  
  <p>I've even run the program with the activation debugging enabled.  This shows me the following related parts:</p>
  
  <pre><code>parse: multipart/*;;            x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true
    Type: multipart/*
      Command: content-handler, Class: com.sun.mail.handlers.multipart_mixed
  
  MailcapCommandMap: createDataContentHandler for multipart/mixed
    search DB #1
    search DB #2
    search fallback DB #1
      got content-handler
        class com.sun.mail.handlers.multipart_mixed
  Can't load DCH com.sun.mail.handlers.multipart_mixed; Exception: java.lang.ClassNotFoundException: com/sun/mail/handlers/multipart_mixed
  </code></pre>
  
  <p>I even get a duplicate of the above for type text/plain.</p>
  
  <pre><code>MailcapCommandMap: createDataContentHandler for text/plain
    search DB #1
      got content-handler
        class com.sun.mail.handlers.text_plain
  Can't load DCH com.sun.mail.handlers.text_plain; Exception: java.lang.ClassNotFoundException: com/sun/mail/handlers/text_plain
  </code></pre>
  
  <p>What am I missing here?</p>
  
  <p>Thanks,
  Steve</p>