2012-01-23 2 views
6

Sto provando a scaricare un file zip, ma ricevo un Stream Closed Exception. Quando uso l'oscillazione gui, ottengo questo errore, ma se uso la console non ci sono problemi. Perché ottengo questa eccezione? Come posso ripararlo?perché ottengo java.io.IOException: flusso chiuso?

Questo è il mio codice:

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()); 
} 

questo è traccia dello stack

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) 
+0

* Dove * si ottiene l'eccezione? –

+12

stack trace please –

+0

I get here: 'while ((count = in.read (b))> = 0) { out.write (b, 0, count); } ' – itro

risposta

4

Questa eccezione di solito significa che la connessione è stata chiusa bruscamente. Guarderei i registri sul server per vedere se c'era un errore.

0

ho risolto quando viene rimosso questo tag di primefaces dal mio xhtml.

<p:media ... 

fonte

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