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>
HerokuJDK内にこのコンストラクターを持たない別のバージョンのJavaMail APIがあると思います...これを修正するにはどうすればよいですか?
デフォルトでは、最新のHerokuスタックで実行されているJavaアプリはOpenJDK8を使用します。
問題は実際のJVM実装に関連しているようには見えませんがsmtp-1.5.1.jar
、クラスパスが欠落していることが原因です。TraceInputStreamを正しくロードするには、次のことを試してください。
java.net.URL classUrl = this.getClass().getResource("com.sun.mail.util.TraceInputStream");
out.println(classUrl.getFile());
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加