我們在使用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>