java.lang.NoClassDefFoundError: javax/mail/Authenticator

Zanderfilet

Grünschnabel
Hallo,

hab obiges Problem, arbeite mit eclipse, die mail.jar sowie activator.jar (zur sicherheit) pfade sind angegeben.

Code:

Java:
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.Authenticator;
import java.io.*;

public class MailCommunicator
{

  public void postMail( String recipients[ ], String subject,
                            String message , String from) throws MessagingException
  {
    boolean debug = false;

     //Set the host smtp address
     Properties props = new Properties();
     props.put("mail.smtp.host", "smtp.web.de");
     props.put("mail.smtp.auth", "true");

    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(props, auth);

    session.setDebug(debug);

    // create a message
    Message msg = new MimeMessage(session);

    // set the from and to address
    InternetAddress addressFrom = new InternetAddress(from);
    msg.setFrom(addressFrom);

    InternetAddress[] addressTo = new InternetAddress[recipients.length];
    for (int i = 0; i < recipients.length; i++)
    {
        addressTo[i] = new InternetAddress(recipients[i]);
    }
    msg.setRecipients(Message.RecipientType.TO, addressTo);


    // Setting the Subject and Content Type
    msg.setSubject(subject);
    msg.setContent(message, "text/plain");
    Transport.send(msg);
 }
}
Nur die verkürzte Form...aber da es schon bei Authentficator hackt reicht des wohl...
Es handelt sich um eine Standalone Applikation...kein J2EE oder ähnliches..

Irgendeine Idde woran es liegen könnte?
 
Zuletzt bearbeitet von einem Moderator:

Zanderfilet

Grünschnabel
Jup genau das...jars sind im build path angegeben...hab sogar nach ewigem grübeln die source attachment und javadoc location gesetzt....aber pustekuchen...nix is..
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

welche Java Version verwendest du denn?

Folgendes funktioniert bei mir unter Java 6 wunderbar:
schau mal hier:
Java:
package de.tutorials.mail;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMailWithAttachmentExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        Properties mailProps = new Properties();

        mailProps.put("mail.smtp.auth", "true");
        mailProps.put("mail.store.protocol", "imap");
        mailProps.put("mail.transport.protocol", "smtp");
        mailProps.put("mail.smtp.socketFactory.port", "456");
        mailProps.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        mailProps.put("mail.imap.host", "imap.baba.de");
        mailProps.put("mail.smtp.host", "smtp.baba.de");

        Session session = Session.getDefaultInstance(mailProps);
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("someone@baba.de"));
        message.setSubject("Test Nachricht");
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(
                "foo@baba.de"));

        message.setText("Test Message");

        message.saveChanges();
        Transport transport = session.getTransport();
        transport.connect("username", "password");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

        System.out.println("sent");
    }
}

Bei Java Versionen vor Java 6 musste man noch das Java Activation Framework zusätzlich in den Classpath legen. bei Java 6 ist das dabei.

Gruß Tom
 

Zanderfilet

Grünschnabel
Hallo,

ja das activation hab ich eben daher auch sicherheitshalber mit rein genommen....verwende logischerweise neuste Version (also wohl jre 1.6 update 6)..hab ja alles schon wieder vom System geschmissen und neu installiert...hat aber auch nix gebracht:-(

@tom ...schaut ja soweit jut aus...evtl. weich ich darauf ab...nur wäre es echt fein zu wissen warum zum Geier eclipse sich bei korrektem Pfad genau nur über diese eine Klasse beschwert...die restlichen Klassen wie Session etc. no prob...nur der blöde authenticator nicht..

Hmmm...keiner ne Idee...? Sonst mach ichs auch zu Fuss...aber wenns die Klasse schon mal gibt und man eh das jar in den Installer packt...wäre schon schön ;-)

P.S.

Da hab ich auch nicht nen Hänger drin (wo auch ;-))?:

import javax.mail.PasswordAuthentication;
import javax.mail.Authenticator;



public class SMTPAuthenticator extends Authenticator
{
int test = 0;
public PasswordAuthentication getPasswordAuthentication()
{
String username = ("test");
String password = ("Test");
return new PasswordAuthentication(username, password);
}
}

So langsam werd ich wieder zum "bloß keine externen jars" Mensch :-(