2014-04-07 2 views
3

Eclipse와 Tomcat 서버에서 maven을 사용하고 있습니다.javamail with maven and tomcat 6

자바 메일을 사용하여 매 시간마다 이메일을 보내는 작은 프로그램을 만들어야합니다.

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을 사용하기 때문에 활성화 할 필요가 없습니다.

는 또한

는 그런 바람둥이/lib 폴더에 mail.jar을 복사의 context.xml를 수정했습니다.

하지만 이상한 오류가 나타납니다.

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 

나는 바람둥이 6.0 JavaMail에 능숙 여러 번 읽고 유래의 많은 답변을 통해 갔다.

답변

3

이 문제는 서버에서 Tomcat과 응용 프로그램의 lib가 모두 mail.jar (WEB-INF/lib에 있음)을 가지고 있으므로 클래스 로더가 두 개의 다른 Session을로드 할 수 있기 때문에 발생합니다. 메일을 삭제하면 .jar 응용 프로그램에서이 문제가 해결됩니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 내 problam 이클립스했다. 내가 이클립스를 통해 시작했기 때문에 나는 eror를 가지고 있었다. 하지만 난 그냥 바람둥이 서버에서 전쟁 파일을 사용하면 작동합니다. @ Kristjan Veskimäe 나는 일식을 사용하여 바람둥이 6.0에서 테스트하고 있었다. 질문에 대한 귀하의 답변에 감사드립니다. – Akash