使用 maven 和 tomcat 6 的 javamail

标签 java eclipse maven tomcat jakarta-mail

我在 eclipse 和 tomcat 服务器中使用 maven。

我必须制作一个小程序,如果需要,每隔一小时使用 java 邮件发送一封电子邮件。

我已经在 webapp 中修改了我的 web.xml。

我像这样在 POM.xml 中添加了邮件。

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <artifactId>activation</artifactId>
            <groupId>javax.activation</groupId>
        </exclusion>
    </exclusions>
</dependency>

因为我不需要激活,因为使用的是 jdk 1.6。

我还修改了context.xml

然后将 mail.jar 复制到 tomcat/lib 文件夹中。

但是我遇到了奇怪的错误。

java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
    at fr.project.batch.jobs.SendEmail.execute(SendEmail.java:53)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
2014-04-07 10:01:47,539 ERROR   duler_Worker-1  Job (DEFAULT.SendMail threw an exception.   [ErrorLogger]
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
    at fr.project.batch.jobs.SendEmail.execute(SendEmail.java:53)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    ... 1 more

我在 tomcat 6.0 JavaMail 资源中阅读了很多次,并浏览了 stackoverflow 的许多答案。

最佳答案

这个问题出现在服务器是因为Tomcat的lib和你的应用程序都有自己的mail.jar副本(在WEB-INF/lib),所以类加载器可以加载两个不同的Session。如果你删除邮件。从您的应用程序中取出 jar,这个问题就会得到解决。

关于使用 maven 和 tomcat 6 的 javamail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907294/

相关文章:

java - 关于 Java 的 Date 类和 getTime() 函数的混淆

java - 如何将多个文件中的数据合并到一个缓冲区中?

eclipse - 如何在Eclipse中添加HTML编辑器?

android - 在我现有的项目 (eclipse) 中导入 CardView 和 RecyclerView (Android 5.0)

java - 如何将 postgresql 数据库连接到 Maven 项目?

java - Webdriver 不支持以其他用户身份运行

java字符串池入口和堆入口机制

java - 将 Canvas 设置为 Eclipse View ?

Intellij IDEA 中的 Maven 无法解析符号 env.HOSTNAME

maven - 无法在 Artifactory 中配置 Vaadin 插件 maven 存储库