11

Tomcat コンテキスト ファイルを使用して javax.mail.Session オブジェクトを取得するために次のコードを実行しようとすると、このエラーが発生します。

        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        Session session = (javax.mail.Session) envCtx.lookup("mail/session");

これは、context.xml 内のリソース宣言です。

  <Resource name="mail/Session" auth="Container"
        type="javax.mail.Session"
        mail.smtp.host="host"
        mail.smtp.user="user"
        mail.smtp.password="password"
        mail.smtp.auth="false"/>

これは、アプリケーション サーバー ライブラリ (Tomcat) フォルダとアプリケーション ライブラリ フォルダに javax.mail.Session 用の同じライブラリがあることが原因である可能性があることを理解しています。 mail.jar) がライブラリの一部として javax.mail.Session を持っていることがわかりますが、今でもこのエラーが発生し、他のライブラリがこの問題の原因である可能性があるかどうかわかりません。私が気付いていない他の問題ですか?

この問題の原因を見つけるために、人々は私が何をすることを提案しますか?

ありがとう。

4

4 に答える 4

20

この問題はサーバーで発生します。これは、Tomcat の lib とアプリケーションの両方に (WEB-INF/lib に) 独自のコピーがありmail.jar、クラスローダーが 2 つの異なるセッションをロードできるためですmail.jar。アプリケーションから を削除すると、この問題は次のようになります。解決しました。

于 2013-12-27T04:20:46.137 に答える
2

提供された maven javax.mail メール 1.4 で提供されたスコープを使用する

于 2014-05-23T21:51:07.340 に答える