【问题标题】:javax.mail no longer working with java 11 and tomcat 8.5javax.mail 不再适用于 java 11 和 tomcat 8.5
【发布时间】:2019-08-20 15:47:34
【问题描述】:

我在Ubunutu 18Apache 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


【解决方案1】:

在您的程序中包含 javax.activation 的 latest version

【讨论】:

  • 但是如何强制使用这些类?我将implementation 'com.sun.activation:jakarta.activation:1.2.1' 放在我的build.gradle 文件中的implementation 'com.sun.mail:javax.mail:1.5.2' 旁边,但在运行时我的班级继续使用旧的activation-1.1.jar...
  • @Atom999 你还有什么依赖旧版本的吗?
  • @BillShannon 是的,javax.mail 依赖于 1.1
  • @Atom999它应该适用于 1.1 或更高版本。如果您使用的是 JDK 11,则必须确保包含较新的版本。在 Maven 和 JDK 模块之间,这太复杂了。
  • @BillShannon 是的,我猜我的发行在别处撒谎。对于 Java8,我们只是将一个 byte[] 放入 javax.activation.DataHandler 构造函数,并且它工作了多年。对于 Java11,由于我还不确定的原因,现在我们必须首先创建一个 ByteArrayDataSource 对象并在 DataHandler 构造函数中使用它。那就是使用带有激活 1.1 依赖项的旧邮件 1.5.2。 (以防将来某些可怜的灵魂偶然发现)不过感谢 cmets!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 2018-04-28
  • 2013-02-09
  • 2023-04-07
  • 2018-10-09
相关资源
最近更新 更多