Stacktrace vergrößern

outbreaker

Bekanntes Mitglied
Hallo,

gibt es eine Möglichkeit beim Ausführen einer Java-Anwendung den Stacktrace zu vergrößern?
Ich bekomme eine Exception die aber nur Java internen Klassen enthält und ich kann es nicht zurückverfolgen wo es in meiner Anwendung auftritt.

Danke
 
S

SlaterB

Gast
Java:
public class Test {
    public static void main(String[] args)  {
        main(null);
    }
}
Ausgabe
Code:
Exception in thread "main" java.lang.StackOverflowError
	at test.Test.main(Test.java:25)
	at test.Test.main(Test.java:25)
	at test.Test.main(Test.java:25)
	at test.Test.main(Test.java:25)
[1000 Zeilen]
StackTraces dürften an sich immer so lange sein wie nötig, wird wenn dann doch wohl von der jeweiligen Ausgabe gekürzt,
kontrollierst du die Ausgabe, hast du die Exception in der Hand oder siehst du nur Text im Log?
gib doch ein Beispiel dieser kurzen Ausgabe,

nicht jede Exception muss eine Beteilung deiner Klassen haben, z.B. nicht in einer Swing-GUI Exceptions des AWT-Threads zur Kontrolle der GUI,

in manchen Fällen kann es helfen, bestimmte Klassen, die aus der API kommen und anscheinend beteiligt sind, zu überschreiben,
einzelne Methoden davon und nur try/catch einfügen um eben exakt die Exception temporär in die Hand zu bekommen
 
Zuletzt bearbeitet von einem Moderator:

outbreaker

Bekanntes Mitglied
Wirklich kurz ist der Trace nicht nur endet er leider bei EventDispatchThread.java

Ich weiß das es bei einem getColumn zu sein scheint nun habe ich aber jede getColumn schon synchronized gemacht mit den anderen Methoden im Model aber ohne Erfolg.
habe auch schon try catch eingebaut da wo auf meinen Vector zugegriffen wird. Des Weiteren auch abfragen ob die position überhaupt im Vector ist.

ohne erfolg...

Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:677)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderHeight(BasicTableHeaderUI.java:721)
        at javax.swing.plaf.basic.BasicTableHeaderUI.createHeaderSize(BasicTableHeaderUI.java:750)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:781)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1634)
        at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:78)
        at java.awt.Container.preferredSize(Container.java:1599)
        at java.awt.Container.getPreferredSize(Container.java:1584)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
        at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:702)
        at java.awt.Container.layout(Container.java:1421)
        at java.awt.Container.doLayout(Container.java:1410)
        at java.awt.Container.validateTree(Container.java:1507)
        at java.awt.Container.validate(Container.java:1480)
        at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:669)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
        at java.awt.EventQueue.access$000(EventQueue.java:84)
        at java.awt.EventQueue$1.run(EventQueue.java:602)
        at java.awt.EventQueue$1.run(EventQueue.java:600)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
P

Pippl

Gast
Naja der StackTrace zeigt dir ja in den ersten paar Zeilen wo der Fehler genau "anfangt".

Sprich dein Fehler tritt in der java.util.Vector.elementAt() Methode auf. Du willst auf was zugreifen das es gar nicht gibt!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
wie vermutet Swing-GUI, der Ursprung ist der EventDispatchThread,
entweder ein externes Ereignis wie Mausklick/ Tastatur oder (ich bin mir nicht sicher) es ist einfach mal Zeit gewesen für paint/ Layout, sei es von Betriebssystem angestoßen, komplett regelmäßig oder nach einem repaint() oder sonstiger Aktion des Users,

letzteres wäre am ehesten noch das was man sich als zusätzliche Information vorstellen kann,
aber das ist bei nebenläufigen Threads wirklich nicht einfach zu holen, kein Teil des StackTraces,

wann tritt denn der Fehler auf, direkt beim ersten Anzeigen der GUI oder im Laufe des Programms?
hast du selber parallel laufende Threads, änderst du die JTable oder deren Model, tauschst du was aus, hast du eine eigene Model-Klasse,
irgendwelche Informationen/ Code dazu?
 

outbreaker

Bekanntes Mitglied
Der Fehler tritt im laufe des Programmes auf aber auch wenn ich nichts mit dem Programm mache. Mal kommt er etwas schneller und mal dauert es eine ganze Weile. Sieht nach einem Timingproblem aus. Ich ändere das Model aus einem Thread raus und lese ihn auch aus. Soweit benutze ich aber zum Ändern des Vectors synchronized wie auch beim lesen obwohl es beim lesen ja eigentlich keine Probleme geben dürfte.

Das der Fehler bei einem elementAt() auftritt weiß ich. Nur prüfe ich extra vor dem elementAt() ob der index im richtigen Bereich liegt.

Code ist schwierig da es eine Menge ist und den Rahmen hier wohl sprengen würde.

Ich versuche mal step by step den Fehler einzugrenzen ...
 
S

SlaterB

Gast
> Nur prüfe ich extra vor dem elementAt() ob der index im richtigen Bereich liegt.
der Fehler tritt doch in der Klasse DefaultTableColumnModel auf, da gibt es keine Prüfung, was interessiert es was du in anderen Code an Prüfungen hast?
auch synchronized bringt nichts, da eben der GUI-Thread nicht synchronisiert

eine Standardlösung ist, konkrete GUI-Änderungen nicht parallel zum GUI-Thread auszuführen mit entsprechenden Super-GAU-Möglichkeiten,
sondern per SwingUtilities.invokeLater() vom GUI-Thread selber ausführen zu lassen,
kann dann paar ms dauern bis das drankommt, aber so ist sichergestellt dass nicht gleichzeitig was anderes mit den GUI-Elementen passiert

diese Übergabe der Aufgabe an den anderen Thread ist übrigens wieder etwas, was im StackTrace dann nicht auftauchen würde,
um nochmal Bezug auf den ersten Post zu nehmen
 

Empire Phoenix

Top Contributor
Denke das problem ist wenn er während du elemente aus dem Vector entfernst rendert, weil er dann ausliest gibt 1 element du entfernst es und dann bekommter nen error da es plötzlich nichtmehr da ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Stacktrace zeigt ...(Unknown Source) Allgemeine Java-Themen 10
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
T Java-Flag XX:-OmitStackTraceInFastThrow -- fehlender StackTrace Allgemeine Java-Themen 2
C Fehlerhafter Stacktrace Allgemeine Java-Themen 8
P Stacktrace Allgemeine Java-Themen 2
S Stacktrace von allen Methoden erhalten..? Allgemeine Java-Themen 4
G hat jeder thread seinen eigenen stacktrace? Allgemeine Java-Themen 2
K $ in Stacktrace Allgemeine Java-Themen 2
J stackTrace mit log4j loggen Allgemeine Java-Themen 9
reibi StackTrace befüllen Allgemeine Java-Themen 2
S Stacktrace Allgemeine Java-Themen 8
K Exception -> Stacktrace speichern Allgemeine Java-Themen 3
P Exception Stacktrace in String ausgeben Allgemeine Java-Themen 16
G Stacktrace loggen Allgemeine Java-Themen 9
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
A Umgebungsvariable Kann Heap Space nicht vergrößern Allgemeine Java-Themen 6
Z Fenster vergrößern und verkleiern Allgemeine Java-Themen 14
G Font richtig vergrößern Allgemeine Java-Themen 4
P Array Dynamisch vergrößern Allgemeine Java-Themen 7
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
J Checkboxen vergrößern? Allgemeine Java-Themen 3
M Stack vergrößern? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben