我需要一點幫助來理解一個錯誤,我希望有經驗的開發人員可以輕松解決這個錯誤:)
我開發了一個 Java EE 應用程式,我剛剛重新安裝了我的服務器(ubuntu),現在我的應用程式無法發送電子郵件。
在我的本地環境中,我仍然可以發送電子郵件(Eclipse、Tomcat9、jdk1.8.0_281)。但是從我的服務器我收到以下錯誤:
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:2016)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1936)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
我無法理解,因為我的服務器也運行 tomcat9 并且我專門安裝了 jdk1.8.0_281。(我安裝了jdk并在/etc/default/tomcat9中設定了JAVA_HOME=/usr/lib/jvm/jdk1.8.0_281)
我從 Eclipse 匯出我的專案,它應該有所有的庫,我看不出這兩個環境有什么不同。
您有什么建議或解決方案嗎?謝謝你,祝你新年快樂!
阿德里安
按照馬特的建議進行編輯 所以我在我的服務器上的本地開發環境等中添加了 -verbose:class 到 java 引數,并為我們的目的尋找有趣的類。正如您所猜測的那樣,這兩種環境之間存在差距,這里:
On Local PC:
[Loaded com.sun.mail.util.TraceInputStream from file:/D:/EclipseWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/MyApp/WEB-INF/lib/javax.mail.jar]
On Ubuntu Server
[2022-01-03 20:21:28] [info] [Loaded com.sun.mail.util.TraceInputStream from file:/var/lib/tomcat9/webapps/MyApp%23%232.02/WEB-INF/lib/mailapi.jar]
uj5u.com熱心網友回復:
在不了解您的依賴關系的情況下,很難說出問題所在,但您的 Java 版本與此問題無關。
您的應用程式的編譯和部署版本很可能使用與本地不同版本的 JavaMail 或其他依賴項,并且此部署版本沒有該方法。
添加 Java 選項-verbose:class,它會告訴您正在加載哪些類,然后 grep forTraceInputStream或 SMTPTransport. 在您的服務器和本地執行相同操作并比較版本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407483.html
標籤:
上一篇:用python創建電子郵件
下一篇:關于雙指標的澄清-無法解釋行為
