2

MailEngine と MailServiceUtil の両方を使用してフックからメールを送信しようとしていますが、まだ送信できていません。私のコードは以下の通りです:

InternetAddress from=null;
InternetAddress to=null;
try {
 from = new  InternetAddress("test@test.com", "Admin admin");
 to = new InternetAddress(newUser.getEmailAddress(), newUser.getFirstName());
} catch (UnsupportedEncodingException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
} 
MailMessage mailMessage = new MailMessage();

mailMessage.setFrom(from);
mailMessage.setTo(to);

mailMessage.setBody(body); 
mailMessage.setSubject(subject);
MailServiceUtil.sendEmail(mailMessage);

これで、次のエラーが発生します。

java.lang.LinkageError: loader constraint violation: when resolving method "com.liferay.portal.kernel.mail.MailMessage.setFrom(Ljavax/mail/internet/InternetAddress;)V" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/lftechnology/sbworkbench/hooks/createaccount/CustomCreateAccountAction, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, com/liferay/portal/kernel/mail/MailMessage, have different Class objects for the type javax/mail/internet/InternetAddress used in the signature

liferay インストールで mail.jar ファイルを見つけましたが、使用できません。アーティファクト ID com.sun を使用して pom ファイルに javax.mail をインポートしようとしましたが、それでもこのエラーが発生します。ここに誰か問題が何であるか知っていますか?

ありがとう

4

2 に答える 2

5

私の推測では、クラスパスに複数のバージョンの mail.jar (または同じコードを含む他のさまざまな化身) があると思います。tomcat に mail.jar が見つかりました - Web アプリケーションの WEB-INF/lib にも含まれていると思います。そこから削除してください。Web アプリケーションは Tomcat のグローバル クラスパスのものを使用する必要があります。

Maven で依存関係を「提供」として構成できるため、Maven はそのコードに依存することを認識しますが、アプリケーションではデプロイしません。

コメントをお寄せください:「再デプロイ」するだけでなく、アンデプロイ (Web アプリケーションを削除) しないでください。そうしないと、Tomcat が以前に提供したライブラリを保持する可能性があるためです。したがって、それらを再度コピーすることはありませんが、それらはまだ存在します。

于 2013-04-03T12:55:19.613 に答える