Eintragsdetails ansehen
ID | Projekt | Kategorie | Sichtbarkeit | Meldungsdatum | Zuletzt aktualisiert |
---|---|---|---|---|---|
0000227 | Magellan | Allgemein | öffentlich | 2008-04-23 10:29 | 2008-04-30 01:20 |
Reporter | Enno | Bearbeitung durch | Enno | ||
Priorität | normal | Schweregrad | schwerer Fehler | Reproduzierbar | immer |
Status | erledigt | Lösung | erledigt | ||
Produktversion | 2.0.0 | ||||
Behoben in Version | 2.0.1 | ||||
Zusammenfassung | 0000227: java.io.Exception: Stream closed beim speichern | ||||
Beschreibung | Datei speichern geht nicht. Ich kriege eine java.io.Exception: Stream closed. Evtl. liegt das daran, dass ich aus einem ZIP geladen habe? Dann sollte ein Dialog kommen, der mir "save as" anbietet. | ||||
Tags | Keine Tags zugeordnet. | ||||
Project | Magellan 2 | ||||
|
Ja, den Fehler hatte ich letztens auch. Auch bei einer ZIP Datei. Ich hab aber noch keine Erklärung, warum. Den StackTrace hab ich nicht mehr. Hast Du ihn noch? |
|
Ich habe mir damit gerade meinen Report zersaegt, das ist also ziemlich kritisch. Werde mal sehen wie man das reproduziert. |
|
(EE) 24.04.2008 10:39:34.515: java.io.IOException: Stream closed at java.util.zip.ZipOutputStream.ensureOpen(Unknown Source) at java.util.zip.ZipOutputStream.putNextEntry(Unknown Source) at magellan.library.io.file.ZipFileType.createOutputStream(ZipFileType.java:106) at magellan.library.io.file.FileType.createWriter(FileType.java:198) at magellan.library.io.cr.CRWriter.<init>(CRWriter.java:130) at magellan.client.Client.saveReport(Client.java:1245) at magellan.client.Client.askToSave(Client.java:1213) at magellan.client.Client.quit(Client.java:1278) at magellan.client.Client$1.windowClosing(Client.java:518) at java.awt.AWTEventMulticaster.windowClosing(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JFrame.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) (EE) 24.04.2008 10:39:35.484: java.lang.NullPointerException at magellan.client.Client.askToSave(Client.java:1215) at magellan.client.Client.quit(Client.java:1278) at magellan.client.Client$1.windowClosing(Client.java:518) at java.awt.AWTEventMulticaster.windowClosing(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JFrame.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) |
|
Erschwerend kommt hinzu, dass beim Speichern zwar eine Sicherungskopie angelegt wird, diese aber nicht benutzt wird. Wenn das Speichern aus welchem Grund auch immer (Platte voll, etc) fehlschlaegt, dann sollte das backup wieder zurueckgespielt werden. Alternativer Vorschlag: Zuerst in eine .tmp datei speichern, dann erst das original-zip zum backup erklaeren, und die .tmp datei zur neuen version (via rename). Und wenn er beim laden kaputtes ZIP findet, selbststaendig nach dem letzten funktionierenden backup suchen, oder den user fragen, ob er das tun will. nicht drauf vertrauen, dass der mit dem explorer selbsthilfe betreiben kann. |
|
Der Code ist ja grauenvoll. Ich habe es mal so eingerichtt, dass die Exception gehandlet wird, indem das temp-file wieder zurueckgespielt wird, so dass man zumindest seinen Report nicht verliert. |
|
Das Problem ist bei genauerem hinsehen, dass CopyFile.copyStreams(currIn, zos); die streams schliesst. |
|
Repariert, Bug kann geschlossen werden. |
|
hast Du das andere auch gleich eingebaut (lade den letzten "heilen" report). Ansonsten mach einen neuen Report auf und dann ist der hier fertig. |
|
Fixed by enno himself |
Änderungsdatum | Benutzername | Feld | Änderung |
---|---|---|---|
2008-04-23 10:29 | Enno | Neuer Eintrag | |
2008-04-24 09:02 | trickert | Status | neu => bestätigt |
2008-04-25 16:49 | Fiete | Status | bestätigt => zugewiesen |
2008-04-25 16:49 | Fiete | Bearbeitung durch | => Enno |
2008-04-30 01:20 | Fiete | Status | zugewiesen => erledigt |
2008-04-30 01:20 | Fiete | Behoben in Version | => 2.0.1 (Planung) |
2008-04-30 01:20 | Fiete | Lösung | offen => erledigt |