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