Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0000227MagellanAllgemeinöffentlich2008-04-30 01:20
ReporterEnno Bearbeitung durchEnno  
PrioritätnormalSchweregradschwerer FehlerReproduzierbarimmer
Status erledigtLösungerledigt 
Produktversion2.0.0 
Behoben in Version2.0.1 
Zusammenfassung0000227: java.io.Exception: Stream closed beim speichern
BeschreibungDatei 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.
TagsKeine Tags zugeordnet.
ProjectMagellan 2

Notizen / Dateien

trickert

2008-04-24 09:02

Manager   ~0000506

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?

Enno

2008-04-24 10:38

Entwickler   ~0000508

Zuletzt bearbeitet: 2008-04-24 10:38

Ich habe mir damit gerade meinen Report zersaegt, das ist also ziemlich kritisch. Werde mal sehen wie man das reproduziert.

Enno

2008-04-24 10:43

Entwickler   ~0000509

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

Enno

2008-04-24 10:49

Entwickler   ~0000511

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.

Enno

2008-04-24 22:34

Entwickler   ~0000514

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.

Enno

2008-04-24 22:40

Entwickler   ~0000515

Das Problem ist bei genauerem hinsehen, dass CopyFile.copyStreams(currIn, zos); die streams schliesst.

Enno

2008-04-24 22:43

Entwickler   ~0000516

Repariert, Bug kann geschlossen werden.

trickert

2008-04-25 16:52

Manager   ~0000518

hast Du das andere auch gleich eingebaut (lade den letzten "heilen" report). Ansonsten mach einen neuen Report auf und dann ist der hier fertig.

Fiete

2008-04-30 01:20

Manager   ~0000529

Fixed by enno himself

Eintrags-Historie

Ä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