Chúng tôi có một ứng dụng web gửi thư. Đối với một số lý do, một cài đặt của nó đã quyết định rằng nó không thể tìm thấy các nhà xây dựng cho SMTPTransport mà mất (Session, URLName) đối số.Tại sao Tomcat không thể tìm SMTPTransport (Phiên, URLName)?
bit có liên quan của stack trace:
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
Chúng tôi đã kiểm tra thấy SMTPTransport không tồn tại trong classpath (mà không phải là đáng ngạc nhiên, bởi vì chúng tôi không nhận được một ClassNotFoundException), và đó là bản sao duy nhất của lớp đó trong classpath. Đó là trong tomcat/lib. Webapp của chúng tôi không bao gồm một bản sao. Không có bản sao trong $ JAVA_HOME/jre/lib.
Tôi thậm chí đã đi xa đến mức dịch ngược lớp học để xác minh rằng nó thực tế là có Trình xây dựng được đề cập.
Tôi đã thực hiện một chút googling và đã tìm thấy những người khác có seen the same error, nhưng không khắc phục được sự cố.