读取Tomcat上的电子邮件:ClassNotFoundException:javax.mail.MessagingException

时间:2015-09-16 16:04:56

标签: maven email tomcat intellij-idea classnotfoundexception

我的应用程序在Tomcat 7上运行。

我试图从收件箱中读取电子邮件,为此我使用普通的Java类。

还有一个Servlet在上述类中调用方法readMails

现在我得到一个例外:

java.lang.ClassNotFoundException: javax.mail.MessagingException
...

我在Maven中使用IntelliJ IDEA,我经常更改javax.mail的依赖关系(参见http://mvnrepository.com/artifact/javax.mail),但异常不断出现。

我还更改了Tomcat版本(7和8)以及" Project SDK"的版本。 (1.7和1.8)和"项目语言水平" (7和8)。

我已经在某地读到,通过IMAP阅读电子邮件与普通Java应用程序并在Tomcat上运行它之间存在差异。

在之前的项目中,我使用普通的Java应用程序成功阅读了电子邮件。

任何人都可以帮我解决这个例外吗?

3 个答案:

答案 0 :(得分:1)

默认情况下,Tomcat库中不包含JavaMail API。

确保JavaMail依赖项(mail-XXjar)与应用程序一起打包(在WEB-INF / lib中),或者在Tomcat类加载器读取的文件夹中(例如$ CATALINA_HOME / lib),如上所述在这里:

http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html

答案 1 :(得分:0)

谢谢,它现在有效。

我将maven(.m2 / repository / ...)下载的jar文件( javax.mail:javax.mail-api-1.5.4.jar )放入 WEB -INF / lib (在我的项目中)。

由于此异常,我还需要将另一个jar文件放入WEB-INF / lib( com.sun.mail:javax.mail-1.5.4.jar ):

java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
    javax.mail.Session.initLogger(Session.java:226)
    javax.mail.Session.<init>(Session.java:210)
    javax.mail.Session.getDefaultInstance(Session.java:321)

答案 2 :(得分:0)

我添加了

<packaging>war</packaging>

到我的pom.xml。这种方式maven将依赖项放在目标文件夹中。