ClassNotFoundException com.sun.mail.util.SharedByteArrayInputStream

ClassNotFoundException com.sun.mail.util.SharedByteArrayInputStream

我部署的系统发送电子邮件时出现以下错误。

Caused by: java.lang.NoClassDefFoundError: com/sun/mail/util/SharedByteArrayInputStream
....
....
Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.SharedByteArrayInputStream
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass

我正在使用:

<dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.5.1</version>
</dependency>

这在过去的一年里一直有效,现在突然抛出这个异常。我更改了 javax.mail 等的任何版本

我尝试将 javax.mail:mail:jar:1.5.0 添加到依赖项中,但在编译时出现错误,指出该 jar 是非法的。 Maven 给出以下错误:Please use the correct artifact for JavaMail. You should be using com.sun.mail:javax.mail... & Found Banned Dependency: javax.mail:mail:jar:1.5.0

我觉得奇怪的是 javax.mail.internet.MimeMessage 有以下导入:

import com.sun.mail.util.*;
import javax.mail.util.SharedByteArrayInputStream;

所以我在创建 MimeMessage 时收到此错误似乎很奇怪,因为它试图获取 com.sun.mail.util.SharedByteArrayInputStream 而不是 javax.mail.util.SharedByteArrayInputStream

我知道已经发布了类似的问题,但答案似乎总是使用我已经在使用的 javax.mail.jar

要解决它,您还需要包含 mail.jar,您可以从 JavaEE SDK 文件夹或 JavaMail API 官方页面获取它。

同样,要通过 JavaMail API 发送电子邮件,您需要包含 javaee.jar 和 mail.jar 库。

http://repo2.maven.org/maven2/javax/mail/mail/1.4.1/mail-1.4.1.jar

http://www.oracle.com/technetwork/java/javamail/index.html

听起来您的类路径中某处有一个非常旧版本的 javax.mail 类。您确定那里没有 j2ee.jar 或 javaee.jar 吗?查看 javax.mail 类.

的所有 jar 文件