DefaultTableModel wirft beim Serialisieren Exception :-(

Status
Nicht offen für weitere Antworten.
M

Marko2001

Gast
java.io.NotSerializableException: javax.swing.JTable$CellEditorRemover
at java.io_ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io_ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io_ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
at javax.swing.JTable.writeObject(JTable.java:5779)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)


Was ist da los? Ich serialisiere wirklich nur das TableModel. Das krasse ist, bei manchen TableModel-Instanzen klappt das serialisieren bei anderen nicht. Es muss irgendwie mit dem Status des TableModel zusammenhaengen.

Kann es sein, dass das TableModel irgendwie von der JTable abhaengig werden kann und dann versucht wird die JTable mitzuserialisieren? Zumindest die Fehlermeldung oben scheint dies anzudeuten: at javax.swing.JTable.writeObject(JTable.java:5779)


Bin mittlerweile am verzeifeln da ich auch keinen Einblick in der Serialisierungsmechanismus von Java habe (ich kann leider keinen anderen Mechanismus verwenden wie XML, glaubt mir).
 
B

Beni

Gast
Der Serialisierungs-Mechanismus folgt einfach allen Referenzen. Da eine JTable einige TableModelListener beim TableModel registriert, kann es passieren, dass das JTable gleich mitserialisiert wird (du kannst dir selbst ausrechnen, dass der Rest deines Programmes gleich noch hintendran gehängt wird...).

Mögliche Lösung:
- Sicherstellen, dass das Model von niemandem benutzt wird
- Nur die Daten serialisieren, nicht das ganze Model
- Und mein Liebling: auf Serialisierung verzichten und ein gut durchdachtes, schön dokumentierstes Dateiformat entwerfen und nutzen.
 
M

Marko2001

Gast
Beni hat gesagt.:
Der Serialisierungs-Mechanismus folgt einfach allen Referenzen. Da eine JTable einige TableModelListener beim TableModel registriert, kann es passieren, dass das JTable gleich mitserialisiert wird (du kannst dir selbst ausrechnen, dass der Rest deines Programmes gleich noch hintendran gehängt wird...).

Mögliche Lösung:
1. Sicherstellen, dass das Model von niemandem benutzt wird
2. Nur die Daten serialisieren, nicht das ganze Model
3. Und mein Liebling: auf Serialisierung verzichten und ein gut durchdachtes, schön dokumentierstes Dateiformat entwerfen und nutzen.

zu 1. Am liebsten haette ich ja ein new DefaultTableModel(oldModel) dass das besorgt. Ich habe naemlich keine Ahnung wer da irgendwelche Listener registriert. Wenn ich eine einzelne Zelle editiere (und damit wohl einen CellEditor implizit setze samt Listener) kommt es zur Exception. Auch weiss ich jetzt nicht wie ich den Serialisierungsmechanismus aufbohren koennte dass er beim speichern automatisch sowas wie newModel = new DefaultTableModel(oldModel) aufruft und dann nicht oldModel sondern newModel serialisiert. Geht sowas?

zu 2. Gut. Das TableModel ist nur ein kleiner Bereich einer groesseren (nicht-GUI Bean). Ich serialisiere die ganze Bean. Ich haette jetzt nichts dagegen anstatt dem TableModel nur die Vektor-Daten darin abzuspeichern. Es sollte halt mehr oder minder automatisch gehen.
Hast du vielleicht ein Beispiel wo man fuer einen bestimmten Typ den Serialisierungsmechanismus leicht abaendern kann und dass dann auch fuers Speichern/Laden gut klappt?

zu 3. Ich glaube das uebersteigt meine Faehigkeiten bei weitem. Ich habe frueher XStream benutzt was wirklich sehr gut klappte. Nun musste ich leider die Applikation als unsigniertes Applet umsetzen wodurch XStream aufgrund von Sicherheitsbeschraenkungen nicht mehr funktioniert. Nur der Default-Serialisierungsmechanismus von Java funktioniert noch.


Danke fuer die Hilfe.
 

André Uhres

Top Contributor
Ich hab's schon mit XMLEncoder gemacht, aber das hilft dir wohl nix, da du XML pauschal ausschliesst (aus welchem Grund auch immer).
 
G

Guest

Gast
André Uhres hat gesagt.:
Ich hab's schon mit XMLEncoder gemacht, aber das hilft dir wohl nix, da du XML pauschal ausschliesst (aus welchem Grund auch immer).

XStream war ja XML aber das kann ich aus oben beschriebenen Gruenden nicht nutzen.

Die hauseigene Java XML-Serialisierung klappt nicht weil die Beans recht komplex sind und nicht dem Beans-Standard folgen.

Also wenn du einen XML-Serialisierer hast der in unsignierten Applets genauso maechtig ist wie der Java ObjectOutputStream oder XStream bin ich entzueckt.
Mit maechtig meine ich, dass er meine sehr komplexen Modelle (die ich uebrigens uebernommen habe und nun nicht mehr aendern darf!) ohne Probleme serialisiert und deserialisiert.
 

André Uhres

Top Contributor
Wir müssen das Model als "public class" erweitern,
mit einem "default" Konstruktor und Getter+Setter für die Properties.
Das "DefaultTableModel" muss man zu diesem Zweck übrigens auch
erweitern, weil Getter/Setter fehlen.
Wenn bei dir eine Erweiterung aus irgendeinem Grund nicht zulässig ist,
dann funktioniert XMLEncoder allerdings nicht.

EDIT: Ich hab allerdings keine Erfahrung damit in Verbindung mit Applets.
 
G

Guest

Gast
André Uhres hat gesagt.:
Wir müssen das Model als "public class" erweitern,
mit einem "default" Konstruktor und Getter+Setter für die Properties.
Das "DefaultTableModel" muss man zu diesem Zweck übrigens auch
erweitern, weil Getter/Setter fehlen.
Wenn bei dir eine Erweiterung aus irgendeinem Grund nicht zulässig ist,
dann funktioniert XMLEncoder allerdings nicht.

EDIT: Ich hab allerdings keine Erfahrung damit in Verbindung mit Applets.

Wie gesagt ist dieses Erweitern unmoeglich, nicht weil ich faul bin sondern aus diversen anderen Gruenden darunter Kompatibilitaet.

Aehnlich wie XStream wird auch der XMLEnocder von Java wohl nicht funktionieren in einem unsignierten Applet. Das muss ich allerdings auch gar nicht ausprobieren, da ich nicht die bestehenden Modelle veraendern kann. XStream war ja grade so praktisch weil es eben alles serialisiert hat und keinen Beans Standard vorraussetzte. Leider kann ich das nicht nutzen.
 

Ebenius

Top Contributor
java.io.NotSerializableException: javax.swing.JTable$CellEditorRemover

In diesem Fall klappte es nicht, weil eine Zelle editiert wurde. Allerdings hast Du die ganze JTable mitserialisiert, was Du ja nicht möchtest.

Ein javax.swing.table.DefaultTableModel kannst Du ohne Listeners so kopieren:
Code:
 public static DefaultTableModel cloneModelWithoutListeners(
        DefaultTableModel orgModel) {
    final Vector<?> clonedData = (Vector<?>) orgModel.getDataVector().clone();
    final int columnCount = orgModel.getColumnCount();
    final Vector<String> columnNames = new Vector<String>(columnCount);
    for (int i = 0; i < columnCount; i++) {
      columnNames.add(orgModel.getColumnName(i));
    }
    return new DefaultTableModel(clonedData, columnNames);
  }

Hilft das? Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C In DefaultTableModel nachträglich Werte einfügen Allgemeine Java-Themen 2
L DefaultTableModel ("Netbeans IDE 8.1") Allgemeine Java-Themen 6
M Zeilen zu einem DefaultTableModel hinzufügen Allgemeine Java-Themen 1
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
J DefaultTableModel persistent speichern Allgemeine Java-Themen 4
TheJavaKid DefaultTableModel komplett leeren Allgemeine Java-Themen 2
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
A Variable, welche Exeption wirft als "Global" deklarieren Allgemeine Java-Themen 13
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
N Methode wirft FatalError Allgemeine Java-Themen 2
J AudioClip wirft IllegalStateException Allgemeine Java-Themen 2
VfL_Freak ServerSocket wirft nicht immer eine BindException Allgemeine Java-Themen 21
T getConstructor() wirft NoSuchMethodException . Allgemeine Java-Themen 7
M Iterator wirft Exception Allgemeine Java-Themen 10
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
M Konstruktor, der Excpetions wirft Allgemeine Java-Themen 2
G POI wirft RecordFormatException Allgemeine Java-Themen 3
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Stringmanipulationen beim Dateinamen Allgemeine Java-Themen 8
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
U Fehler beim Compillieren Allgemeine Java-Themen 13
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
J Jasper Report - seltame Meldung beim compilieren Allgemeine Java-Themen 3
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
S Seitenausrichtung beim Drucken Allgemeine Java-Themen 1
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
M Beim Öffnen Dialog Directory und Filetype definieren Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
Fischkralle Beim Clean Coden an den Schnittstellen geschnitten. Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
Thallius Swing Merkwürdiges Verhalten beim Panel Tausch Allgemeine Java-Themen 3
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
J JDK installieren Das Jdk funtioniert beim Editor nicht. Allgemeine Java-Themen 3
R Verdrückt beim Sicherheitshinweis Allgemeine Java-Themen 2
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
RalleYTN JAnsi Warum bleiben die Hintergrundfarben beim Reseten der Konsole? Allgemeine Java-Themen 0
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
E JCuda-0.6.5 Probleme beim ausführen der Datei Allgemeine Java-Themen 0
S Verständnisproblem beim Mocking Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben