我正在尝试通过Java Mail API发送电子邮件,并且在笔记本电脑上工作正常。当我在Heroku中执行完全相同的操作时,我得到了以下信息:
java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.(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 ...
这是我所拥有的pom.xml
:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mailapi</artifactId>
<version>1.4.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.3</version>
<scope>runtime</scope>
</dependency>
我猜Heroku JDK内还有Java Mail API的另一个版本,它没有此构造函数。如何解决?
默认情况下,在最新的Heroku堆栈上运行的Java应用程序使用OpenJDK 8。
您的问题似乎与实际的JVM实现无关,而是由于smtp-1.5.1.jar
classpath中的缺失。为了确保正确加载TraceInputStream,请尝试以下操作:
java.net.URL classUrl = this.getClass().getResource("com.sun.mail.util.TraceInputStream");
out.println(classUrl.getFile());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句