У нас есть веб-приложение, которое отправляет почту.По какой-то причине его установка решила, что не может найти конструктор для SMTPTransport, который принимает (Session, URLName) аргументы.
Соответствующие биты трассировки стека:
javax.mail.NoSuchProviderException: Provider class does not have a constructor(Session, URLName): protocol=smtp; type=javax.mail.Provider$Type@1dedf78; 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.Наше веб-приложение не содержит дубликатов.В $ JAVA_HOME / jre / lib нет дубликата.
Я даже зашел так далеко, что декомпилировал класс, чтобы убедиться, что он действительно имеет рассматриваемый Конструктор.
IЯ немного погуглил и нашел других людей, которые видели ту же ошибку , но не исправили проблему.