Mein Programm stürzt wegen einer Null-Zeiger-Ausnahme ab.Klassen-Deklaration verursacht Null-Zeiger-Ausnahme
Snip von Stack-Trace:
java.lang.NullPointerException
at com.my.GRTRecTimeSortComparator.compare(SourceFile:15)
, die gut und gut ist. Aber mein Problem ist, dass die Leitung 15 ist die Klassendeklaration:
15 public class GRTRecTimeSortComparator implements Comparator<GRTRecord> {
16 @Override
17 public int compare(GRTRecord rec1, GRTRecord rec2) {
18
19 int returnVal=rec1.getRecordCalendar().compareTo(rec2.getRecordCalendar());
20 return returnVal;
21 }
22}
Es ist die Funktion Vergleich rufen, aber ich sehe nicht ein Problem mit, dass entweder. Jedem Datensatz ist ein eindeutiger Kalender zugewiesen.
Irgendwelche Ideen? Was habe ich hier falsch gemacht?
Edit: als Antwort auf Anfragen:
Nein, es ist nichts Ungewöhnliches über die Klasse selbst, andere als die Tatsache, dass ich es schrieb.
Ich benutze Proguard. Vielleicht ersetzt die Verschleierung die Dinge falsch?
Ich schreibe gerade Tests für die Aufzeichnungen. Sie sollten nicht null
sein, noch sollte die Calendars
; Ich benutze sie unmittelbar vorher und bekomme gute Ergebnisse.
Vielleicht passiere ich gerade die ArrayList
falsch.
EDIT 2:
Logging Linien in die Klasse eingefügt nie laufen bekommen. Egal, was ich der Klasse hinzufüge oder tue, der Null-Zeiger wird immer in die Klassendeklarationszeile aufgelöst.
Entfernt Proguard Obfuscation, und immer noch keine Würfel.
Ich bin wirklich frustriert.
bearbeiten 3:
für zukünftige Benutzer:
Proguard ruiniert Ihr Stack-Trace. Das war die Ursache für das Oben. Entfernen Sie das Programm, wenn Probleme auftreten.
Die Ursache war tatsächlich ein beschädigter Datensatz im Dataset.
Wahrscheinlich ist die Quelle, aus der Sie lesen, nicht synchron mit dem Stack-Trace in Ihrem kompilierten Code. Versuchen Sie, von Clean zu erstellen und dann erneut auszuführen. –