メールを送信するWebアプリケーションがあります。なんらかの理由で、(Session、URLName)引数を取るSMTPTransportのコンストラクタが見つからないと判断しました。スタックトレースのTomcatがSMTPTransport(Session、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は(私たちはClassNotFoundExceptionが取得していないことから、驚くべきことではないです)、クラスパスに存在し、それがあることないことをチェックしましたクラスパス内のそのクラスの唯一のコピー。それはtomcat/libにあります。私たちのwebappには重複は含まれていません。 $ JAVA_HOME/jre/libには重複はありません。私もそれが実際でないことを確認するために、これまでデコンパイルクラスとして行ってきた
は、問題のコンストラクタを持っています。
私はちょっとしたことをして、seen the same errorを持っている他の人たちを見つけましたが、問題の修正はありませんでした。