Javamail et Tomcat : probleme avec la classe SharedByteArrayInputStream
4 réponses
cfranco
Bonjour à tous,
J'ai un soucis dans l'utilisation de Javamail dans une servlet Tomcat
(avec Tapestry, le but étant que l'application web que je développe
envoie automatiquement un email à l'utilisateur à certaines occasions).
J'ai le problème suivant : tout se passe comme si la classe
com.sun.mail.util.SharedByteArrayInputStream est introuvable. Tomcat me
renvoie l'erreur : "java.lang.NoClassDefFoundError
com/sun/mail/util/SharedByteArrayInputStream" lorsqu'il exécute
l'instruction suivante :
MimeMessage message = new MimeMessage(session);
J'ai repris mot pour mot un exemple d'envoi d'email de la doc de
javamail.
Bien sûr, j'ai vérifié mon Classpath, et la classe
com.sun.mail.util.SharedByteArrayInputStream est bien dedans, elle est
dans le fichier mail.jar qui est avec tous mes autres JARs que
j'utilise. D'ailleurs, le reste des classes de ce fichier est bon.
Ce qui m'inquiète, c'est qu'en cherchant sur le web, je me rend compte
que je ne suis pas le seul à avoir ce problème... Pas mal de gens ont
exactement la même erreur dans la même configuration que moi (c'est à
dire avec Tomcat), mais constatent que le même code hors d'une servlet
fonctionne parfaitement ! Et jusqu'à présent je n'ai vu personne arriver
à comprendre la raison du problème, ni à en trouver une solution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Symon
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
Bon courage !
Symon
On utilise la même configuration ici (javamail / tomcat) et on n'a pas
eu ce problème.
Vérifie bien que tu as bien une seule version de
SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être
que tu en as deux et que la "mauvaise" version est placée avant
l'autre dans ton Classpath... Ca expliquerait tout.
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
Bon courage !
Symon
cfranco
Symon wrote:
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je vais rechercher encore une fois pour être bien sûr.
-- Christophe Franco
Symon <s-oualid@artefrance.fr> wrote:
On utilise la même configuration ici (javamail / tomcat) et on n'a pas
eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont
d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de
SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être
que tu en as deux et que la "mauvaise" version est placée avant
l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je
vais rechercher encore une fois pour être bien sûr.
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je vais rechercher encore une fois pour être bien sûr.
-- Christophe Franco
jerome moliere
Christophe Franco wrote:
Symon wrote:
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je vais rechercher encore une fois pour être bien sûr.
bonjour christophe,
peux tu faire quelques tests: - lancer tomcat en verbose de maniere a tracer les chargements de classes ? (cf options de java) - prendre ton meme code et le tester soous un jboss/tomcat je ne serai pas etonne qu'il fonctionne - si t'en arrives a ce point, il faudra faire dans le crade car tu auras un porbleme subtil de classloader avec tomcat: * repackager l'appli * distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
HTH Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Christophe Franco wrote:
Symon <s-oualid@artefrance.fr> wrote:
On utilise la même configuration ici (javamail / tomcat) et on n'a pas
eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont
d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de
SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être
que tu en as deux et que la "mauvaise" version est placée avant
l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je
vais rechercher encore une fois pour être bien sûr.
bonjour christophe,
peux tu faire quelques tests:
- lancer tomcat en verbose de maniere a tracer les chargements de
classes ? (cf options de java)
- prendre ton meme code et le tester soous un jboss/tomcat je ne serai
pas etonne qu'il fonctionne
- si t'en arrives a ce point, il faudra faire dans le crade car tu auras
un porbleme subtil de classloader avec tomcat:
* repackager l'appli
* distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
HTH
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
On utilise la même configuration ici (javamail / tomcat) et on n'a pas eu ce problème.
Les dernières versions de l'un comme de l'autre ? Les JAR sont d'origine, pas de recompilation ou de décompression ?
Vérifie bien que tu as bien une seule version de SharedByteArrayInputStream (la mienne est dans mail.jar)... Peut être que tu en as deux et que la "mauvaise" version est placée avant l'autre dans ton Classpath... Ca expliquerait tout.
J'ai un peu fouillé aussi, j'ai pensé à ça, mais j'ai pas trouvé. Je vais rechercher encore une fois pour être bien sûr.
bonjour christophe,
peux tu faire quelques tests: - lancer tomcat en verbose de maniere a tracer les chargements de classes ? (cf options de java) - prendre ton meme code et le tester soous un jboss/tomcat je ne serai pas etonne qu'il fonctionne - si t'en arrives a ce point, il faudra faire dans le crade car tu auras un porbleme subtil de classloader avec tomcat: * repackager l'appli * distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
HTH Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
cfranco
jerome moliere wrote:
bonjour christophe, peux tu faire quelques tests: - lancer tomcat en verbose de maniere a tracer les chargements de classes ? (cf options de java) - prendre ton meme code et le tester soous un jboss/tomcat je ne serai pas etonne qu'il fonctionne - si t'en arrives a ce point, il faudra faire dans le crade car tu auras un porbleme subtil de classloader avec tomcat: * repackager l'appli * distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
J'avais trouvé entre temps, c'est ce dernier point, mail.jar dans tomcat/common/lib plutôt qu'avec les autres JARs...
-- Christophe Franco
jerome moliere <jmoliere@nerim.net> wrote:
bonjour christophe,
peux tu faire quelques tests:
- lancer tomcat en verbose de maniere a tracer les chargements de
classes ? (cf options de java)
- prendre ton meme code et le tester soous un jboss/tomcat je ne serai
pas etonne qu'il fonctionne
- si t'en arrives a ce point, il faudra faire dans le crade car tu auras
un porbleme subtil de classloader avec tomcat:
* repackager l'appli
* distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
J'avais trouvé entre temps, c'est ce dernier point, mail.jar dans
tomcat/common/lib plutôt qu'avec les autres JARs...
bonjour christophe, peux tu faire quelques tests: - lancer tomcat en verbose de maniere a tracer les chargements de classes ? (cf options de java) - prendre ton meme code et le tester soous un jboss/tomcat je ne serai pas etonne qu'il fonctionne - si t'en arrives a ce point, il faudra faire dans le crade car tu auras un porbleme subtil de classloader avec tomcat: * repackager l'appli * distribuer ton mail.jar dans jre/common/endorsed ou dans celui de tomcat
J'avais trouvé entre temps, c'est ce dernier point, mail.jar dans tomcat/common/lib plutôt qu'avec les autres JARs...