Что приводит к преждевременному закрытию потока содержимого сообщения в Windows 7 и OS X Lion? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть почтовый клиент, написанный на Java с использованием API JavaMail.Недавно было выпущено обновление Java 1.6.0_29-b11 , из-за которого мой клиент не может получать сообщения с сервера в Windows 7 и Mac OS X Lion.Однако в Windows XP и Mac OS X сообщения Snow Leopard извлекаются нормально.В примечаниях к выпуску об обновлении не упоминается ничего, что я могу напрямую связать с проблемой.

Я могу получить все объекты Message с почтового сервера (POP3), а также их заголовкии UID;получение не удается, когда я пытаюсь получить содержимое сообщения.В зависимости от реализации Message я получаю две разные трассировки стека для решения одной и той же проблемы, которую я включил ниже.

Мой вопрос заключается в том, что может заставить эти потоки работать должным образом в более старых выпусках операционных систем, но не работать в текущих выпусках?

StackTrace 1

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Stream closed
    at javax.mail.util.SharedFileInputStream.newStream(SharedFileInputStream.java:507)
    at com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:242)
    at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:98)
    at com.sun.mail.handlers.text_plain.getContent(text_plain.java:107)
    at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:775)
    at javax.activation.DataHandler.getContent(DataHandler.java:522)
    at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1419)
    at cfr.cReceivedEmail.extractPartContent(cReceivedEmail.java:223)
    at cfr.cReceivedEmail.cacheAll(cReceivedEmail.java:106)
    at cfr.cReceivedEmail.<init>(cReceivedEmail.java:74)
    at cfr.cEmailReceiver.receiveEmails(cEmailReceiver.java:378)
    at cfr.cEmailInDialog.doLoad(cEmailInDialog.java:498)
    at cfr.cEmailInDialog.during(cEmailInDialog.java:751)
    at nitidus.awe.cWindowManager.doDuring(cWindowManager.java:187)
    at nitidus.awe.cTemplateManager.doDuring(cTemplateManager.java:1144)
    at nitidus.awe.cTemplateManager.actionPerformed(cTemplateManager.java:184)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    ... more

StackTrace 2

javax.mail.MessagingException: No inputstream from datasource;
  nested exception is:
    java.lang.RuntimeException: Stream closed
    at javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:791)
    at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:503)
    at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1434)
    at cfr.cReceivedEmail.extractPartContent(cReceivedEmail.java:236)
    at cfr.cReceivedEmail.cacheAll(cReceivedEmail.java:119)
    at cfr.cReceivedEmail.<init>(cReceivedEmail.java:75)
    at cfr.cEmailReceiver.receiveEmails(cEmailReceiver.java:381)
    at cfr.cEmailInDialog.doLoad(cEmailInDialog.java:498)
    at cfr.cEmailInDialog.during(cEmailInDialog.java:751)
    at nitidus.awe.cWindowManager.doDuring(cWindowManager.java:187)
    at nitidus.awe.cTemplateManager.doDuring(cTemplateManager.java:1144)
    at nitidus.awe.cTemplateManager.actionPerformed(cTemplateManager.java:184)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    ... more
Caused by: java.lang.RuntimeException: Stream closed
    at javax.mail.util.SharedFileInputStream.newStream(SharedFileInputStream.java:507)
    at com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:242)
    at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:98)
    at javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:785)
    ... 47 more
...