【问题标题】:Eclipse: java.lang.NoClassDefFoundError: javax/activation/DataHandlerEclipse:java.lang.NoClassDefFoundError:javax/activation/DataHandler
【发布时间】:2018-02-12 16:13:33
【问题描述】:

我正在尝试用 java 发送电子邮件。 代码如下:

String mailSmtpHost = "smtp.example.com";
String mailTo = "email@example.com";
        String mailFrom = "email@example.com";
        String mailSubject = "Email subject";
        String mailText = "Some text";
        Properties properties = new Properties();
        properties.put("mail.smtp.host", mailSmtpHost);
        Session emailSession = Session.getDefaultInstance(properties);
try {
            Message emailMessage = new MimeMessage(emailSession);
            emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
            emailMessage.setFrom(new InternetAddress(mailFrom));
            emailMessage.setSubject(mailSubject);
            emailMessage.setText(mailText);
            emailSession.setDebug(true);
            Transport.send(emailMessage);
        }catch(Exception e) {
            System.out.println("Errore email: "+e.toString());
        }

当我编译项目时,在线:

Message emailMessage = new MimeMessage(emailSession);

...出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler

注意:我使用的是java -version: 9.0.4

【问题讨论】:

  • 你的java版本是多少?
  • 据报道,它是 9.0.4

标签: java eclipse email


【解决方案1】:

JDK 9 默认禁用对许多 javax.* API 的访问,现在不推荐使用 javax 激活。

但是您可以通过在运行时添加模块来解决它

"--add-modules java.activation".

【讨论】:

  • 我该怎么做?
  • 右键单击项目。单击运行方式,然后单击运行配置。您可以在 VM Arguments 框中的 Arguments 选项卡中更改传递给 JVM 的参数。
  • 如果你在tomcat中运行的webapp遇到这个问题,你可以在$CATALINA_HOME/bin/setenv.sh添加下面一行:CATALINA_OPTS="$CATALINA_OPTS --add-modules java.activation"。如果文件$CATALINA_HOME/bin/setenv.sh 不存在,则创建它并使其可执行。
  • @LéoR。如果不推荐使用 javax 激活,我们应该改用什么,因为它可以在以后的版本中删除?
  • 我仍在等待有人建议如何使用 java 发送电子邮件,因为 javax.activation 已禁用且 JDK 15 不可用。@Gustavo 也问过这个问题
【解决方案2】:

下载并添加外部jakarta.activation-1.2.1.jar 它是 Jakarta Activation 项目。

【解决方案3】:

尝试在远程服务器中部署我的 jar 应用程序时遇到了同样的错误。 就我而言,我必须下载 javax.activation 库并将其添加到我的项目中。

在生成 .JAR 之前,确保您在 project.properties 文件中获得了正确的 javac.mail 和 javax.activation 库引用

Project.properties

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 2019-09-19
    • 2019-06-17
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多