【发布时间】:2019-08-20 15:47:34
【问题描述】:
我在Ubunutu 18 和Apache Tomcat 8.5 上使用java 11.0.4 2019-07-16 LTS。
我创建了一个类用于发送导入的电子邮件
import javax.mail.*;
import javax.mail.internet.*;
现在,当我使用java 8时,发送电子邮件没有任何问题。但是,现在它不起作用,而是出现 500 错误。
看看我的localhost.2019-08-20.log,我可以找到以下堆栈跟踪:
20-Aug-2019 17:13:14.961 SEVERE [http-nio-80-exec-96] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mlc.servlets.DispatcherServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: javax.activation.DataHandler
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1360)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
at mlc.Mailer.sendEMail(Mailer.java:35)
...and so on...
做一些研究我认为问题是模块java.activation没有加载。
但是,我在互联网上没有找到任何解决方案。我只发现 java.activation 已从 java 11 中删除。所以,我想我需要别的东西。
那么,我的问题是:我必须做些什么才能让我的 web 应用再次使用 Tomcat 8.5 发送电子邮件?
谢谢
【问题讨论】:
-
我看到您将此标记为“已回答”。您介意分享一下您是如何使用它的吗?主要是,您是如何在类路径上同时获得 javax.mail 和更新的 javax.activation 的,以及如何让您的应用程序使用 1.2.1 激活类而不是 1.1 类。我正在使用 Gradle,尽管我成功地“实现”了两者,但当我尝试在我的邮件类中实例化 javax.activation.DataHandler.java 时,我的应用程序类使用 1.1 版本。
标签: tomcat jakarta-mail java-11