java.lang.ClassNotFoundException: javax.mail.Message

java.lang.ClassNotFoundException: javax.mail.Message

我正在尝试在 spark 环境中使用 Javax 发送电子邮件。当我尝试在 IntelliJ 中构建此代码时,它构建正常,没有任何问题。

但是当我将此代码带到服务器并尝试 运行 它时,我收到以下错误

java.lang.ClassNotFoundException: javax.mail.Message

Scala 代码片段

    val message = new MimeMessage(session)
    message.setFrom("abc@xyz.com")
    //message.addRecipients(Message.RecipientType.TO, to_address)
    message.addRecipients(javax.mail.Message.RecipientType.TO, "abc@xyz.com")

我试过保持 javax.mail-1.5.6.jar 以及 commons-email-1.5.jar 在我的 class 服务器路径中,但仍然出现此错误。

Spark 命令

spark-submit --master yarn --conf spark.driver.maxResultSize=0 --conf spark.driver.extraClassPath=/home/abc/commons-email-1.5.jar,/home/abc/activation-1.1.1.jar --conf spark.executor.extraClassPath=/home/abc/commons-email-1.5.jar,/home/abc/activation-1.1.1.jar --jars /home/abc/commons-email-1.5.jar --jars /home/abc/activation-1.1.1.jar --class com.abc.common.utils.UtilityMailer ./abc-xyz.jar
spark-submit --master yarn --conf spark.driver.maxResultSize=0 --conf spark.driver.extraClassPath=/home/abc/javax.mail-1.5.6.jar,/home/abc/activation-1.1.1.jar --conf spark.executor.extraClassPath=/home/abc/javax.mail-1.5.6.jar,/home/abc/activation-1.1.1.jar --jars /home/abc/javax.mail-1.5.6.jar --jars /home/abc/activation-1.1.1.jar --class com.abc.common.utils.UtilityMailer ./abc-xyz.jar

请帮忙!!!

我来猜一猜……您遇到包名冲突是因为:

  • 您正在 Java EE 环境中开发,并且
  • 您正在部署到 Jakarta EE 环境。

Java EE 使用 javax.* 包命名。在 Oracle Corp 将 Java EE 的责任移交给 Eclipse Foundation 之后,他们将包命名更改为 jakarta.*.

您可以在行业新闻、视频讲座和会议演示文稿的许多 处阅读更多关于雅加达转型的信息。

要解决您的问题,可以:

  • 将您的部署环境降级到 Java EE,或
  • 将您的开发环境升级到 Jakarta EE。这包括将您的 import 语句从 javax 更改为 jakarta

两个选项都有效。大多数供应商将支持他们的 Java EE 时代产品多年。但未来的改进和创新将主要发生在新一代 Jakarta EE 产品发布中。所以你最终会想要迁移到 Jakarta EE。但这样做并不紧急。