NAS

Java warning: [serial] serializable class <anonymous

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.433
Hallo

Ich habe mit Nerbeans eine GUI gebastelt. Dabei erzeugt Netbeans automatisch den nötigen Code um die GUI zu erzeugen.
Leider liefert mir der Compiler eine Warnung:
Code:
warning: [serial] serializable class <anonymous TestGUI.Test_Frame$9> has no definition of serialVersionUID
        ) {

Quelle für diese Meldung ist:
Code:
 jTableClientList.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ClientList"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });

Zeile 301 ist hier Zeile 8.

Da dieser Code von Netbeans erstellt wurde und ich ihn deshalb nicht anpassen darf:
Was genau ist die Uhrsache und wie kann ich diese Warnung vermeiden?

Danke
 
also dein Warning bedeutet, dass es bei unterschiedlichen Java VMs bei der binären Serialisation zu Inkompatibilitäten kommen kann. Dürfte in dem Fall getrost zu ignorieren sein!

Außerdem kannst du den Code in Netbeans editieren .. er ist nur gesperrt den kann man irgendwo freischalten. Ich weis nur nicht mehr genau wo.

Gruß Alex

Edit: wenn du das entsperren gefunden hat kannst du diese Zeile in die Klasse einfügen, die das Warning wirft:

Code:
public static final long serialVersionUID = 24362462L;

dann sollte das Warning weg sein!
 
Zuletzt bearbeitet:
Hallo

Ich habe der Klasse Test_Frame deine Zeile hinzugefügt.
Leider hat dies nichts an der Warnung geändert.

Falls wichtig: jTableClientList ist vom Typ javax.swing.JTable.

Danke
 
kannst du evtl mal die komplette Klasse Test_Frame posten?

ich bin zwar nicht so der Freund von zusammengeklickten GUIs kann aber mal versuchen mich einzulesen!

Wenn du dich rein Interessehalber damit beschäftigst schau dir mal Layoutmanager an. Da lernst du es gleich richtig!

Edit: zudem glaube ich dass dein DefaultTableModel das Warning wirft! versuche das:

Code:
jTableClientList.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
 
            },
            new String [] {
                "ClientList"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false
            };
 
            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public static final long serialVersionUID = 24362462L;
 
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
 
Zuletzt bearbeitet:
Die serialVersionUID muss der anonymen inneren Klasse hinzugefügt werden. DefaultTableModel verwendet Serializable und mithin sollte man allen Klassen, die davon erben, eine entsprechende UID mit auf den Weg geben. Daran erinnert die Warnung (die sich abschalten lassen sollte).

Gibt es in NetBeans keine Funktion, die fehlende UID zu generieren? Es gibt notfalls sicher Plugins, die das können.

Die serialVersionUID definiert man aber immer als private Field!
 
Ich habe die Zeile auch nur aus nem anderen Forum...
 
Danke soares,
da merkt man mal wieder: Man lernt nie aus!

Edit: Ich wüsste nur mal gerne ob der Fehler bei Squicky jetzt verschwunden ist, nachdem er im anonymen DefaultTableModel die serialVersionUID gesetzt hat.
 
Zuletzt bearbeitet:
Natürlich verschwindet die Warnung, wenn die serialVersionUID hinzugefügt wurde (es sein denn, das Hinting-Feature in NetBeans arbeitet fehlerhaft, wovon ich nicht ausgehe).
 
Zurück
Oben