将 jakarta.mail 1.6.5 更新为 2.0.1
update jakarta.mail 1.6.5 to 2.0.1
我正在尝试从 JakartaMail 1.6.5 迁移到 2.0.1,当我启动我的应用程序时,我得到了
Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
我也试试改:
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
到
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
但是,当我使用 Spring class 的 JavaMailSenderImpl mailSender
时,例如:
MimeMessage message = mailSender.createMimeMessage();
它说:
Required type:
jakarta.mail.internet.MimeMessage
Provided:
javax.mail.internet.MimeMessage
我该如何解决这个问题? Spring 支持 JakartaMail 2.0.1 吗?因为 JavaMailSender 在 spring-context-support(我用的是 5.3.9 版本)
问题是 JakartaMail 2.x 切换到了新的 jakarta.mail
命名空间。因此,针对早期版本的 JakartaMail/JavaMail 构建的库将无法像他们期望的 javax.mail
命名空间那样工作。
Spring 仍然使用 javax.mail
命名空间,因此不能与 JakartaMail 2.x 结合使用。事实上,Spring 框架的当前主要是针对 com.sun.mail:javax.mail:1.6.2
/javax.mail:javax.mail-api:1.6.2
编译的(参见 build.gradle
)。
目前,如果您想使用Spring,您需要使用JakartaMail 1.6.7 或更早版本。据我所知,1.6.7 和 2.0.1 版本完全相同(或几乎相同),除了命名空间不同。
根据 Support for Jakarta EE 9 (annotations and interfaces in jakarta.* namespace),Spring 将切换到使用 Spring Framework 6 / Spring Boot 3 中的 jakarta.*
命名空间。
我正在尝试从 JakartaMail 1.6.5 迁移到 2.0.1,当我启动我的应用程序时,我得到了
Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
我也试试改:
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
到
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
但是,当我使用 Spring class 的 JavaMailSenderImpl mailSender
时,例如:
MimeMessage message = mailSender.createMimeMessage();
它说:
Required type:
jakarta.mail.internet.MimeMessage
Provided:
javax.mail.internet.MimeMessage
我该如何解决这个问题? Spring 支持 JakartaMail 2.0.1 吗?因为 JavaMailSender 在 spring-context-support(我用的是 5.3.9 版本)
问题是 JakartaMail 2.x 切换到了新的 jakarta.mail
命名空间。因此,针对早期版本的 JakartaMail/JavaMail 构建的库将无法像他们期望的 javax.mail
命名空间那样工作。
Spring 仍然使用 javax.mail
命名空间,因此不能与 JakartaMail 2.x 结合使用。事实上,Spring 框架的当前主要是针对 com.sun.mail:javax.mail:1.6.2
/javax.mail:javax.mail-api:1.6.2
编译的(参见 build.gradle
)。
目前,如果您想使用Spring,您需要使用JakartaMail 1.6.7 或更早版本。据我所知,1.6.7 和 2.0.1 版本完全相同(或几乎相同),除了命名空间不同。
根据 Support for Jakarta EE 9 (annotations and interfaces in jakarta.* namespace),Spring 将切换到使用 Spring Framework 6 / Spring Boot 3 中的 jakarta.*
命名空间。