Eclipse:java.lang.NoClassDefFoundError:javax/activation/DataHandler

gab*_*onc 8 java eclipse email

我正在尝试用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());
        }
Run Code Online (Sandbox Code Playgroud)

当我编译项目时,在线:

Message emailMessage = new MimeMessage(emailSession);
Run Code Online (Sandbox Code Playgroud)

...出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用 java -version: 9.0.4

Léo*_* R. 14

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

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

"--add-modules java.activation".
Run Code Online (Sandbox Code Playgroud)

  • @LéoR。如果 javax 激活已被弃用,我们应该使用什么来代替,因为它可以在以后的版本中删除? (4认同)
  • 右键单击该项目.单击运行,然后单击运行配置.您可以在"VM参数"框的"参数"选项卡中更改传递给JVM的参数. (3认同)
  • 我怎样才能做到这一点? (2认同)