尝试通过SMTP(Java)发送电子邮件时java.lang.NoClassDefFoundError

时间:2017-12-12 06:46:45

标签: java smtp

尝试让我的程序使用java向我自己发送电子邮件,而且我很不成功。我一直收到与班级相关的错误

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler at Running.main(Running.java:22)

Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler

我得到的错误就是这行代码:

Message msg = new MimeMessage(session);

1 个答案:

答案 0 :(得分:0)

请参阅此行:java.lang.ClassNotFoundException: javax.activation.DataHandler。这意味着无法在任何地方找到DataHandler类,因此引发了异常。快速搜索后,我发现缺少的类属于JAF (activation.jar)

基础知识:在编译期间搜索文件在哪里?

  1. 您在java编译期间指定的源目录。通常,这可以通过任何构建配置文件来完成,例如Maven为pom.xml,Gradle为build.gradle

  2. 通常会在类路径中定义和存储依赖项。类路径是一系列目录(或zip文件),其中javac编译器搜索未在任何源文件中定义的类。

  3. 通过将缺少的jar添加到类路径follow this for eclipse

    来取消阻止
    1. javax.activation jar添加到您的类路径中,并检查这是否可以解决您的问题。

    2. 由于您尝试通过SMTP发送电子邮件,因此您可能希望将JavaMail (mail.jar)添加到类路径中,而另一个activation.jar会因为传递依赖而自动添加。