Java 是什么导致Windows 7和OS X Lion上的消息内容流过早关闭?

Java 是什么导致Windows 7和OS X Lion上的消息内容流过早关闭?,java,windows-7,osx-lion,jakarta-mail,Java,Windows 7,Osx Lion,Jakarta Mail,我有一个使用JavaMail API用Java编写的电子邮件客户端。最近发布了一个Java更新,这导致我的客户端无法从Windows 7和Mac OS X Lion上的服务器检索消息。但是,在Windows XP和Mac OS X上,通常会检索雪豹消息。关于更新的发行说明没有提到任何与问题直接相关的内容 我能够从(POP3)邮件服务器中检索所有消息对象,以及它们的标题和UID;尝试获取邮件内容时检索失败。根据消息实现的不同,我会得到两个不同的堆栈跟踪,它们似乎是同一个问题,我已经在下面介绍过了

我有一个使用JavaMail API用Java编写的电子邮件客户端。最近发布了一个Java更新,这导致我的客户端无法从Windows 7和Mac OS X Lion上的服务器检索消息。但是,在Windows XP和Mac OS X上,通常会检索雪豹消息。关于更新的发行说明没有提到任何与问题直接相关的内容

我能够从(POP3)邮件服务器中检索所有
消息
对象,以及它们的标题和UID;尝试获取邮件内容时检索失败。根据
消息
实现的不同,我会得到两个不同的堆栈跟踪,它们似乎是同一个问题,我已经在下面介绍过了

我的问题是,是什么导致这些流在较旧版本的操作系统上正常工作,但在当前版本上失败

堆栈跟踪1 线程“AWT-EventQueue-0”java.lang.RuntimeException中的异常:流已关闭 位于javax.mail.util.SharedFileInputStream.newStream(SharedFileInputStream.java:507) 在com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:242)上 位于javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:98) 在com.sun.mail.handlers.text\u plain.getContent(text\u plain.java:107) 位于javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:775) 位于javax.activation.DataHandler.getContent(DataHandler.java:522) 在javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1419) 在cfr.cReceivedEmail.extractPartContent(cReceivedEmail.java:223) 在cfr.cReceivedEmail.cacheAll(cReceivedEmail.java:106) 在cfr.creceivedmail.(creceivedmail.java:74) 在cfr.cEmailReceiver.receiveEmails(cEmailReceiver.java:378) 在cfr.cEmailInDialog.doLoad(cEmailInDialog.java:498) 在cfr.cEmailInDialog.during期间(cEmailInDialog.java:751) 在nitidus.awe.cWindowManager.doDuring(cWindowManager.java:187) 位于nitidus.awe.cTemplateManager.doDuring(cTemplateManager.java:1144) 在nitidus.awe.cTemplateManager.actionPerformed上(cTemplateManager.java:184) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) ... 更多
堆栈跟踪2
javax.mail.MessaginException:没有来自数据源的inputstream;
嵌套异常是:
java.lang.RuntimeException:流已关闭
位于javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:791)
位于javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:503)
在javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1434)
在cfr.creceivedmail.extractPartContent(creceivedmail.java:236)上
在cfr.cReceivedEmail.cacheAll(cReceivedEmail.java:119)
在cfr.creceivedmail.(creceivedmail.java:75)
在cfr.cEmailReceiver.receiveEmails(cEmailReceiver.java:381)
在cfr.cEmailInDialog.doLoad(cEmailInDialog.java:498)
在cfr.cEmailInDialog.during期间(cEmailInDialog.java:751)
在nitidus.awe.cWindowManager.doDuring(cWindowManager.java:187)
位于nitidus.awe.cTemplateManager.doDuring(cTemplateManager.java:1144)
在nitidus.awe.cTemplateManager.actionPerformed上(cTemplateManager.java:184)
在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
... 更多
原因:java.lang.RuntimeException:流已关闭
位于javax.mail.util.SharedFileInputStream.newStream(SharedFileInputStream.java:507)
在com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:242)上
位于javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:98)
在javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:785)
... 47多

不是您问题的答案,而是。。。从EDT(事件调度线程)连接到远程服务器(POP3服务器)是非常非常非常错误的。@user988052有趣,我没听说过。我在一家公司的UI框架内工作,只是使用了标准实践;你能详细说明一下是什么原因造成的吗?如果我们的做法是错误的,我很想纠正它。你永远不应该“阻止”EDT。任何可能长时间运行的操作都应该在EDT之外进行,否则就有“冻结”UI的风险。联系服务器基本上是最严重的违规行为之一,因为网络规则编号是:网络不可靠。@user988052不幸的是,锁定UI线程是框架的已知问题,我无法修复它。不过,谢谢你指出这一点;我正在调查这是否影响了问题。
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
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