NetBeans vollständigen Exception-Traceback anzeigen

Javohl!

Mitglied
Hallo Java-Forum!

Ich beginne derzeit mit Java-Programmierung. Nun habe ich das folgende Problem:

während der Programmlaufzeit bekomme ich in der Output-Leiste unten die folgende Exception angezeigt:
...
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:367)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:305)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:894)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IndexOutOfBoundsException: Index: 9, Size: 8
at java.util.ArrayList.rangeCheck(ArrayList.java:638)
at java.util.ArrayList.remove(ArrayList.java:477)
at com.sun.javafx.collections.ObservableListWrapper.doRemove(ObservableListWrapper.java:114)
at javafx.collections.ModifiableObservableListBase.remove(ModifiableObservableListBase.java:179)
at gui_first.GUI_First.start(GUI_First.java:90)
at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
... 1 more
Exception running application gui_first.GUI_First
Java Result: 1
...

Kann man dieses "...1 more" weiter auflösen, also ansehen, an welcher Programmstelle der Fehler aufgetreten ist?

Oder steht zur Laufzeit nicht mehr Information über das "...1 more" zur verfügung?

offenbar wird die Exception an folgender stelle geschmissen:
Java:
        series.getData().remove(9);
offenbar versuche ich einen Eintag in der Instanz series zo löschen, die nicht da ist, also kommt die IndexOutOfBoundsException.

Aber kann ich mir die Programm-Zeile anzeigen lassen, in der der Fehler auftrat, anstatt dass ich selber suchen muss?
Oder geht es nur, wenn ich den .remove(9) - Funktionsaufruf in einen try-catch block packe?
 

Gucky

Top Contributor
Das du 1...more weiter auflöst wird dir nichts bringen, da du
Code:
com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
nicht selber programmiert hast. Interessant sind eigentlich nur die ersten vielleicht fünf Zeilen. Mehr habe ich noch nie gebraucht.

In eclipse wird die Exception so ausgegeben: [EXCEPTIONNAME] at [KLASSE] in line [ZEILE] [STACKTRACE]. Ein paar Elemente des Stacktraces kann man anklicken. Dann springt eclipse direkt zu diesen Methoden. Meistens sind die Anklickbaren die Ersten. Das geht in der eclipseeigenen Outputkonsole.
Wie das bei NetBeans ist, weiß ich nicht.
 

turtle

Top Contributor
Ich behaupte, das muss man nicht weiter aufdröseln, oder?

Caused by: java.lang.IndexOutOfBoundsException: Index: 9, Size: 8
at java.util.ArrayList.rangeCheck(ArrayList.java:638)
at java.util.ArrayList.remove(ArrayList.java:477)
at com.sun.javafx.collections.ObservableListWrapper.doRemove(ObservableListWrapper.java:114)
at javafx.collections.ModifiableObservableListBase.remove(ModifiableObservableListBase.java:179)
at gui_first.GUI_First.start(GUI_First.java:90)

Ich schaue immer im Stacktrace nach der ersten Zeile vom Code, der von mir/dir kommt und das scheint wohl gui_first.GUI_First.start zu sein. Da BEGINNT ein Problem, welches letztendlich zur IndexOutOfBoundsException führt.
In Eclipse kann man übrigens einen Breakpoint auf eine Exception setzen, so das das Programm genau dort anhält, wo der fehler auftritt (hier die IndexOutOfBoundsException), weiss aber nicht, ob NetBeans das auch kann. Aber,"notfalls" musst du dein Programm genauer analysieren und denken, denken, denken:D
PS:
Oder geht es nur, wenn ich den .remove(9) - Funktionsaufruf in einen try-catch block packe?
DAS ist ganz schlechter Stil, weil du ja das Problem gar nicht beseitigst, sondern irgendwie darum herum programmierst:eek: Du musst wirklich herausfinden, WARUM der Fehler erscheint und diesen auch beseitigen!
 
Zuletzt bearbeitet:

Javohl!

Mitglied
Ich behaupte, das muss man nicht weiter aufdröseln, oder?

Caused by: java.lang.IndexOutOfBoundsException: Index: 9, Size: 8
at java.util.ArrayList.rangeCheck(ArrayList.java:638)
at java.util.ArrayList.remove(ArrayList.java:477)
at com.sun.javafx.collections.ObservableListWrapper.doRemove(ObservableListWrapper.java:114)
at javafx.collections.ModifiableObservableListBase.remove(ModifiableObservableListBase.java:179)
at gui_first.GUI_First.start(GUI_First.java:90)

Ja, danke, hast recht. Ich habe diese Stacktrace-Stelle übersehen, und ging davon aus, meine Programmzeile müsste in diesem "... 1 more" stecken, also dass meine Programmzeile sozusagen "am ende" des Stacktrace stehen müsste.

Zu der Fehlerstelle gelangt man in NetBeams auch direkt durch den "link" in dem Output, es setzt den Kursor genau auf die Fehlerzeile.
 

Javohl!

Mitglied
Ist zwar offtopic, aber ich verstehe noch eine Fehlermeldung nicht:

Wenn ich das semicolon weglasse, also:
Java:
series.getData().remove(0)
wird beim compilieren dieser Fehler nicht in dem Output angezeigt, stadtdessen kommt die Warnung:

One or more Projects were compiled with errors.
Application you are running may end unexpectedly.

mit optionen Run anyway/cancel

Wenn ich das Programm dann laufen lasse (index ist 0, deswegen keine OutOfBondsException), läuft auch alles ganz normal, wie "mit Semicolon".

Aber warum erkennt der compiler den Semikolonfehler nicht, bzw. warum wird es mit einem solchen Fehler überhaupt korrekt fertig compiliert?

Die variable series zeigt auf ein XYChart.Series - Objekt:

XYChart.Series (JavaFX 2.2)
Java:
import javafx.scene.chart.XYChart;
...
XYChart.Series series = new XYChart.Series();
bei anderen Datentypen wird der Fehler erkannt.
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
In Eclipse wird der Fehler angezeigt. Sofern du diesen Codeteil (in diesem Fall wäre das die Methode) nie aufrufst, stört das niemanden.
 

Ähnliche Java Themen

Neue Themen


Oben