我们在使用JavaMail时有可能会如下异常:
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava/io/InputStream;Lcom/sun/mail/util/MailLogger;)V
at com.sun.mail.smtp.SMTPTransport.initStreams(SMTPTransport.java:2014)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1936)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:192)
该异常是由jar包冲突引起的,在发送邮件的时候我们需要在pom文件中手动引入 javax.mail 包,此时如果在其它的jar中也包含该包的时候就会出现上述异常,我们只需要在maven中找到同样包含了 javax.mail 包的jar就行了,如图所示:
然后只需要在对应的jar依赖的地方排除掉 javax.mail 包问题就解决了
<exclusions>
<!-- 排除mail包冲突,避免发送邮件失败 -->
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mailapi</artifactId>
</exclusion>
</exclusions>