Исключение приведения класса IMAPFolder для почты Java при использовании Jetty - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть проблема, которая кажется мне действительно странной!Я работаю с java mail api в некоторых POJO и сервлетах / jsps, работающих на встроенном сервере Jetty.Проблема в том, что после того, как я извлекаю все папки, но при попытке преобразовать отдельную папку из типа «Папка» в тип IMAPFolder это не удается.Самое странное, что мои тесты JUnit прекрасно работают, папка преобразуется и все сообщения извлекаются.Однако при запуске приложения это не удалось.У меня просто появляется сообщение об ошибке

500 ([Lcom.sun.mail.imap.IMAPMessage; cannot be cast to [Lcom.sun.mail.imap.IMAPMessage;)

Код прост:

//...
for(Folder fl:mailFolders){

    try {
        if((fl.getType() & Folder.HOLDS_MESSAGES) != 0){
        Folder f = fetch.connectToInbox(st, fl.getFullName());
            fetch.processAllMessages(f);
        }
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
}
//.. }

  public synchronized void processAllMessages(Folder fldr){

        IMAPFolder fl = (IMAPFolder) fldr ;
  }

Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 23 ноября 2011

У вас есть две копии классов JavaMail, доступных для вашего приложения, и они загружаются различными загрузчиками классов, поэтому вы получаете странное исключение.

...