【问题标题】:why do i get java.io.IOException: Stream closed?为什么我得到 java.io.IOException: Stream closed?
【发布时间】:2023-03-25 22:44:01
【问题描述】:

我正在尝试下载一个 zip 文件,但我收到了 Stream Closed Exception。 当我使用 swing gui 时,会出现此错误,但如果我使用控制台,则没有问题。 为什么我会得到这个异常?我该如何解决?

这是我的代码:

URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
FileOutputStream out = new FileOutputStream(destination.getPath());
byte[] b = new byte[1024];
int count;

while ((count = in.read(b)) >= 0) {
    out.write(b, 0, count);
}
out.flush();
out.close();
in.close();
OptionPane.showMessageDialog(null, "Download is finished");
} catch (HttpUnauthorizedException e) {
    JOptionPane.showMessageDialog(null, "Proxy or Server Authentication Required");
} catch (IOException e) {
    System.out.println(e.getMessage());
}

这是堆栈跟踪

java.io.IOException: Stream closed.
at java.net.PlainSocketImpl.available(PlainSocketImpl.java:428)
at java.net.SocketInputStream.available(SocketInputStream.java:217)
at java.io.BufferedInputStream.read(BufferedInputStream.java:321)
at weblogic.net.http.KeepAliveStream.read(KeepAliveStream.java:86)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at be.azvub.ext.bcfidownloder.Download.downloadZipFile(Download.java:130)
at be.azvub.ext.bcfidownloder.Download.authorize(Download.java:91)
at be.azvub.ext.bcfidownloder.BcfiDownloadPanel$4.mouseClicked(BcfiDownloadPanel.java:110)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5520)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
at java.awt.Component.processEvent(Component.java:5282)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3984)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at be.azvub.webutil.gui.WebEventQueue.dispatchEvent(WebEventQueue.java:34)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

【问题讨论】:

  • 在哪里你得到了异常?
  • 请跟踪堆栈
  • 我在这里遇到异常:while ((count = in.read(b)) >= 0) { out.write(b, 0, count); }
  • 我确实添加了堆栈跟踪:请参见上文
  • 我用的是Weblogic,可以是Weblogic的吗?

标签: java inputstream


【解决方案1】:

这个异常通常意味着连接被突然关闭。我会查看服务器上的日志,看看是否有错误。

【讨论】:

    【解决方案2】:

    这可能是由于 JVM 延迟,也可能是由于 unix/linux 操作系统的随机数生成器造成的。您应该将其替换为 /dev/./urandom

    此链接有更多详细信息。

    http://devcorn.com/java-io-ioexception-stream-closed-no-available-router-to-destination/

    【讨论】:

      【解决方案3】:

      当我从我的 xhtml 中删除 Primefaces 的这个标签时,我解决了这个问题。

      <p:media ...
      

      来源

      http://www.primefaces.org/showcase/ui/multimedia/media.xhtml
      

      【讨论】:

        猜你喜欢
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2020-08-11
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多