javax.mail 不再使用 java 11 和 tomcat 8.5

too*_*oom 5 tomcat jakarta-mail java-11

我使用java 11.0.4 2019-07-16 LTSUbunutu 18Apache Tomcat 8.5

我创建了一个用于发送导入电子邮件的类

import javax.mail.*;
import javax.mail.internet.*;
Run Code Online (Sandbox Code Playgroud)

现在,当我使用时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...
Run Code Online (Sandbox Code Playgroud)

做一些研究我认为问题是模块java.activation没有加载。

但是,我没有在互联网上找到任何解决方案。我只发现它java.activation已从 java 11 中删除。所以,我想我需要别的东西。

所以,我的问题是:我必须做什么才能让我的 web 应用程序再次使用 Tomcat 8.5 发送电子邮件?

谢谢

Bil*_*non 5

在您的程序中包含最新版本的 javax.activation。

  • 但是如何强制使用这些类呢?我将 ```implementation 'com.sun.activation:jakarta.activation:1.2.1'``` 放在 ```implementation 'com.sun.mail:javax.mail:1.5.2'``` 旁边我的 build.gradle 文件,但在运行时我的类继续使用旧的activation-1.1.jar... (2认同)