2015-09-16 1 views
1

Mon application est en cours d'exécution sur Tomcat 7.lire des emails sur Tomcat: ClassNotFoundException: javax.mail.MessagingException

Je suis en train de lire des e-mails de la boîte de réception, et que j'utiliser une classe Java normale.

Il existe également une servlet qui appelle la méthode readMails dans la classe mentionnée.

Maintenant je une exception:

java.lang.ClassNotFoundException: javax.mail.MessagingException 
... 

J'utilise IntelliJ IDEA avec Maven, j'ai changé la dépendance d'un javax.mail beaucoup (voir http://mvnrepository.com/artifact/javax.mail), mais l'exception revient sans cesse.

J'ai également changé la version de Tomcat (7 et 8) et la version de "Project SDK" (1.7 et 1.8) et "Project language level" (7 et 8). J'ai lu quelque part qu'il y a une différence entre lire des emails via IMAP avec une application Java normale et l'exécuter sur Tomcat.

Dans un projet précédent, je lisais les emails avec succès avec une application Java normale.

Quelqu'un peut-il m'aider avec cette exception?

Répondre

0

I ajouté

<packaging>war</packaging> 

à mon pom.xml. De cette façon maven met les dépendances dans le dossier cible.

1

L'API JavaMail n'est pas incluse par défaut parmi les bibliothèques Tomcat. Assurez-vous que la dépendance JavaMail (mail-XXjar) est empaquetée avec votre application (dans WEB-INF/lib) ou dans un dossier que les chargeurs de classe Tomcat lisent (par exemple $ CATALINA_HOME/lib), comme décrit ici:

http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html

0

Merci, cela fonctionne maintenant.

Je mis le fichier jar (javax.mail: javax.mail-api-1.5.4.jar) téléchargé par Maven (.m2/dépôt/...) dans WEB-INF/lib (dans mon projet).

J'ai aussi besoin de mettre un autre fichier jar dans WEB-INF/lib (com.sun.mail: javax.mail-1.5.4.jar) en raison de cette exception:

java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger 
    javax.mail.Session.initLogger(Session.java:226) 
    javax.mail.Session.<init>(Session.java:210) 
    javax.mail.Session.getDefaultInstance(Session.java:321)