Problem loading ImageIcon in applet: java.io.IOException: Stream closed
Hello everybody,
This is a very strange problem: I have a Swing app, but I need to convert it to a Applet so, I did some changes but now it doesn't load the images it has for menu toolbar, now I get this error message:
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEd.createAppletImageIcon(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEd.createToolBar(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEdX.createToolBar(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEd.populateContentPane(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEd.<init>(Unknown Source)
at co.gov.superservicios.orfeo.flujos.java.GraphEdX.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I have a signed jar with this structure:
Java classes:
co\gov\superservicios\orfeo\flujos\java
Toolbar images:
co\gov\superservicios\orfeo\flujos\java\resources
in my code, I'm trying to load images with:
JToolBar toolbar = super.createToolBar();
// Collapse
collapse =new AbstractAction(){
publicvoid actionPerformed(ActionEvent e){
graph.getGraphLayoutCache().collapse(graph.getSelectionCells());
}
};
String url ="co/gov/superservicios/orfeo/flujos/java/resources/collapse.gif";
collapse.putValue(Action.SMALL_ICON,
createAppletImageIcon(url,"Colapsar"));
collapse.setEnabled(false);
toolbar.add(collapse);
protectedstatic ImageIcon createAppletImageIcon(String path, String description){
int MAX_IMAGE_SIZE = 910; /int count = 0;
BufferedInputStream imgStream =new BufferedInputStream(
Graphica.class.getResourceAsStream(path));
if (imgStream !=null){
byte buf[] =newbyte[MAX_IMAGE_SIZE];
try{
count = imgStream.read(buf);
}catch (IOException ieo){
System.err.println("Couldn't read stream from file: " + path);
}
try{
imgStream.close();
}catch (IOException ieo){
System.err.println("No se pudo cerrar el archivo " + path);
}
if (count <= 0){
System.err.println("Empty file: " + path);
returnnull;
}
returnnew ImageIcon(Toolkit.getDefaultToolkit().createImage(buf),
description);
}else{
System.err.println("Couldn't find file: " + path);
returnnull;
}
}
As I can see, it's not a FNF Exception, so it finds the file but it gets closed with every operation, I tried a: stream.available();
and I get the same Exception. What can I do?
Thanks a lot,
spelling, changed son for so :)
Message was edited by:
bogotano

