Java .lang. noclassdeffounderror:当我尝试在Java Swing应用程序中发送电子邮件时



我试图创建一个Java Swing(与Ant)应用程序发送电子邮件到所需的地址(我的第一次)。应用程序成功构建,但是当我点击按钮发送电子邮件时,我得到了很多不同的错误消息,第一个是java.lang.NoClassDefFoundError: javax/activation/DataSource .发件人电子邮件是新的,我没有将其与电话号码相关联(我被告知它可能导致问题)。我还已经将mail.jar添加到项目库中。catch JOptionPane也没有打印任何错误,所以我很难弄清楚这一点。我已经附上了代码以及错误的截图。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

String toEmail= "email1";//Changed emails for securityPurposes
String fromEmail = "email2";
String fromEmailPassword="Password";
String subject="This is the subject";
Properties properties = new Properties();
properties.put("mail.smtp.auth","true");
properties.put("mail.smtp.starttls.enable","true");
properties.put("mail.smtp.host","smtp.gmail.com");
properties.put("mail.smtp.port","587");

Session session=Session.getDefaultInstance(properties,new >javax.mail.Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(fromEmail,fromEmailPassword);
}
});
try{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress(fromEmail));
message.addRecipient(Message.RecipientType.TO,new >InternetAddress(toEmail));
message.setSubject(subject);
message.setText("Hello");
Transport.send(message);
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, ex);
}

}                                        

我已经找过了,但没有发现任何类似的案例或解决方案。

在Java 11中,所有所谓的"企业";模块从JDK和JRE中删除。这包括像JAXB这样的api,也包括Java激活框架。这是JavaMail所需要的,但是您的应用程序缺少它(如错误消息所示)。

添加这个依赖:https://mvnrepository.com/artifact/jakarta.activation/jakarta.activation-api/1.2.2。确保远离版本2。

java.lang。NoClassDefFoundError意味着类不能在类路径中找到,根据你的描述,我认为你是通过ant创建一个jar,然后用java -jar执行。你应该检查:

  1. 在java命令中有一个-cp选项,其中包含所需的jar
  2. 所需的jar被正确地指向

相关内容

最新更新