我在 intellij 的 javax.mail.MimeMessage 处收到 NoClassDefFoundError
I'm getting NoClassDefFoundError at javax.mail.MimeMessage in intellij
我最近从网站 https://javaee.github.io/javamail/
下载了 javax.mail
我正在使用 IntelliJ 作为我的 java IDE 并且我添加了 YouTube 视频中显示的 jar 文件。
IntelliJ 也没有显示任何错误[我的意思是 jar 添加成功]。
我输入了在 YouTube 上看到的示例程序。
我输入的程序如下。
package com.company;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class MailTest {
public static void main(String[] args) {
final String username="username";
final String password="password";
final String from="from@gmail.com";
final String to="to@gmail.com";
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.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
MimeMessage msg=new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
msg.setSubject("Message from JAVA");
msg.setText("Sample body");
/*
Multipart multipart=new MimeMultipart();
MimeBodyPart mimeBodyPart=new MimeBodyPart();
mimeBodyPart.setText("Please open the file attached below");
MimeBodyPart attachment=new MimeBodyPart();
attachment.attachFile("test.txt");
multipart.addBodyPart(mimeBodyPart);
multipart.addBodyPart(attachment);
msg.setContent(multipart);
*/
Transport.send(msg);
System.out.println("Mail sent successfully");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
代码与我在 YouTube 上看到的相同,IDE 也没有显示错误。但是,当我 运行 代码时,我希望它 运行 与 YouTuber 的 运行 一样。
但是我在这行的第 30 行得到了 NoClassDefFoundError。
MimeMessage msg=new MimeMessage(session);
我现在不知道该怎么办?
谁能帮我解决这个问题...
这是我下面的错误
Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler
at com.company.MailTest.main(MailTest.java:30)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
... 1 more
Process finished with exit code 1
你必须下载javax.activation jar
我最近从网站 https://javaee.github.io/javamail/
下载了 javax.mail我正在使用 IntelliJ 作为我的 java IDE 并且我添加了 YouTube 视频中显示的 jar 文件。 IntelliJ 也没有显示任何错误[我的意思是 jar 添加成功]。
我输入了在 YouTube 上看到的示例程序。
我输入的程序如下。
package com.company;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class MailTest {
public static void main(String[] args) {
final String username="username";
final String password="password";
final String from="from@gmail.com";
final String to="to@gmail.com";
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.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
MimeMessage msg=new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
msg.setSubject("Message from JAVA");
msg.setText("Sample body");
/*
Multipart multipart=new MimeMultipart();
MimeBodyPart mimeBodyPart=new MimeBodyPart();
mimeBodyPart.setText("Please open the file attached below");
MimeBodyPart attachment=new MimeBodyPart();
attachment.attachFile("test.txt");
multipart.addBodyPart(mimeBodyPart);
multipart.addBodyPart(attachment);
msg.setContent(multipart);
*/
Transport.send(msg);
System.out.println("Mail sent successfully");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
代码与我在 YouTube 上看到的相同,IDE 也没有显示错误。但是,当我 运行 代码时,我希望它 运行 与 YouTuber 的 运行 一样。
但是我在这行的第 30 行得到了 NoClassDefFoundError。
MimeMessage msg=new MimeMessage(session);
我现在不知道该怎么办? 谁能帮我解决这个问题...
这是我下面的错误
Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler
at com.company.MailTest.main(MailTest.java:30)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
... 1 more
Process finished with exit code 1
你必须下载javax.activation jar