2012-10-17 11 views
6

ich die folgende Fehlermeldung erhalten haben, wenn eine Anwendung in NetBeans zu debuggen versuchen:Wie kann ich eine anonyme innere Klasse in einem NotSerializableException identifizieren

java.io.WriteAbortedException: Schreiben abgebrochen; java.io.NotSerializableException: board.Board 1 $

Im Zuge der Debug-I einfügen mussten ‚Serializable implementiert‘ in einer Reihe von Klassen als die Ausnahme im Verlauf ergab sich aus einer Datei zu lesen, die eine speichert großes Objekt. Dies war nicht schwierig, da die Klasse, die Aufmerksamkeit benötigt, aus der Ausnahmebedingung klar war. Was mich geworfen hat, ist die scheinbar anonyme innere Klasse "Board $ 1". Ich kann nicht für das Leben von mir die Quelle mit "Brett" identifizieren, die das Problem verursacht. Wie kann ich das machen?

Da es eine Frage der Debugging-Praxis ist und nicht die Besonderheiten des Codes (denke ich) habe ich es nicht aufgenommen, aber ich kann das leicht hinzufügen, wenn es hilft.

Antwort

5

Board$1 ist die erste anonyme Klasse, die in Board.java angetroffen wird. Zum Beispiel:

class Board { 
    public static void main(String[] args) { 
    new Object() {}; // Board$1 
    new Object() {}; // Board$2 
    } 
} 

Mit einem IDE wie Eclipse, dann ist es einfach, diese anonymen Klassen in der Gliederungsansicht zu erkennen. Ich bin sicher, NetBeans hat ähnliche Ansichten:

enter image description here

+0

Ich habe meine Dateien nach Eclipse kopiert und den Package Explorer benutzt, um in das Board zu graben, fand aber nichts. Aber basierend auf der von Ihnen verwendeten Signatur, new Object() {}, habe ich MouseAdapter() {...} gefunden, die nicht in Eclipse oder NetBeans auftauchte. Ich habe Transient eingefügt, um zu verhindern, dass es in die Datei geschrieben wird. Das scheint zu funktionieren, aber jetzt habe ich noch einen anderen, nicht verwandten Bug ... Ich werde jetzt daran arbeiten, vorausgesetzt, ich habe dieses Problem gelöst. – forsate

+0

OK - der andere nicht zusammenhängende Fehler ist behoben, wie es das ursprüngliche Problem ist. Im Nachhinein offensichtlich. Vielen Dank, Lukas. Jetzt frage ich mich, ob ein bisschen verdächtiger Code meinerseits der Grund dafür ist, dass der MouseAdapter nicht auftaucht, aber das ist ein anderes Problem. – forsate

3

In IntelliJ (und Android Studio) ein Navigate- kann> Klasse (⌘-O auf dem Mac) und fügen Sie ihn in Board$1, und es wird Ihnen die nehmen Code für diese innere Klasse.

+0

überprüfte Netbeans 8 und konnte keine Methode zum Anzeigen anonymer innerer Klassen im Navigatorbedienfeld finden oder zu diesem navigieren wie IntelliJ = / –