हमारे पास एक वेब एप्लिकेशन है जो मेल भेजता है। किसी कारण से, इसकी स्थापना ने निर्णय लिया है कि यह SMTPTransport के लिए कन्स्ट्रक्टर नहीं ढूंढ सकता है जो (सत्र, URLName) तर्क लेता है।टॉमकैट को SMTPTransport (सत्र, URLName) क्यों नहीं मिल सकता है?
स्टैक ट्रेस के प्रासंगिक बिट:
javax.mail.NoSuchProviderException: Provider class does not have a constructor(Session, URLName): protocol=smtp; [email protected]; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc
at javax.mail.Session.getService(Session.java:499)
at javax.mail.Session.getTransport(Session.java:387)
at javax.mail.Session.getTransport(Session.java:347)
at javax.mail.Session.getTransport(Session.java:376)
at javax.mail.Transport.send(Transport.java:67)
at javax.mail.Transport.send(Transport.java:48)
...
Caused by: java.lang.NoSuchMethodException: com.sun.mail.smtp.SMTPTransport.<init>(javax.mail.Session, javax.mail.URLName)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at javax.mail.Session.getService(Session.java:496)
... 8 more
हम पहले से ही देख लिया है कि SMTPTransport classpath में मौजूद है (जो, आश्चर्य की बात नहीं है, क्योंकि हम एक ClassNotFoundException नहीं मिल रहे हैं), और यह है कि कक्षा वर्ग में उस वर्ग की एकमात्र प्रति। यह tomcat/lib में है। हमारे वेबएप में डुप्लिकेट शामिल नहीं है। $ JAVA_HOME/jre/lib में डुप्लिकेट नहीं है।
मैं भी है कि यह तथ्य में करता है सत्यापित करने के लिए अब तक विघटित वर्ग के रूप में चले गए सवाल में निर्माता है।
मैंने थोड़ी सी गुगलिंग की है और अन्य लोगों को मिला है जिनके पास seen the same error है, लेकिन समस्या के लिए कोई फिक्स नहीं है।