У меня есть почтовый клиент, написанный на 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