我的应用程序在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应用程序成功阅读了电子邮件。
任何人都可以帮我解决这个例外吗?
答案 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将依赖项放在目标文件夹中。