# Exception mit "Unknown Source"



## Kiamur (10. Dez 2005)

Hallo!

Ich habe ein recht umfangreiches Programm,das bis vor kurzem noch sehr gut lief. Eigentlich läuft es immer noch sehr gut, aber seit dem ich aus einem JTabbedPane mit Hilfe der Methode remove() ein Tab, um genau zu sein das ganz links mit dem Index 0 entferne bekomme ich diese Exception im Hintergrund:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
	at javax.swing.plaf.basic.BasicTabbedPaneUI.tabForCoordinate(Unknown Source)
	at javax.swing.plaf.basic.BasicTabbedPaneUI.setRolloverTab(Unknown Source)
	at javax.swing.plaf.basic.BasicTabbedPaneUI.access$1200(Unknown Source)
	at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mouseEntered(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.trackMouseEnterExit(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Leider steht da ja nun immer "Unknown Source", so dass ich gar nicht weiss, wie ich den Fehler beheben, oder abfangen soll.

Wie gesagt, die Exceptin tritt nur auf, wenn ich das erste Tab (index 0) entferne.

Die ganzen Klassen, die dort aufgeführt sind sind ja auch alle aus dem SDK.  Wie soll ich denn da den Fehler finden?

Das Programm läuft aber trotzdem noch fehlerlos weiter.

Weiss hier jemand Rat?

Gruß
Maik


----------



## Campino (11. Dez 2005)

ähm...gibt es eventuell keine Index 0 sondern nur einen Index 1. Halte ich aber für unwahrscheinlich...


----------



## SlaterB (11. Dez 2005)

Teile der Fehlermeldungen in google eintippen hilft manchmal weiter,
in diesem Fall vielleicht auch nicht, nach manchen umherschauen in verschiedenen Threads scheint es mir ein Bug zu sein,
und es scheint so manche davon zu geben

siehe z.B. http://bugs.freehep.org/browse/JAS-224


auf einer Seite 
https://www.limewire.org/fisheye/vi...nutella/gui/search/SearchResultDisplayer.java
gar folgendes:

```
/**
     * @modifies tabbed pane, entries
     * @effects removes the window at i from this
     */
   void killSearchAtIndex(int i) {
         [..]
 
                try {
                    switcher.first(results); //show dummy table
                } catch(ArrayIndexOutOfBoundsException aioobe) {
                    //happens on jdk1.5 beta w/ windows XP, ignore.
                }
       [..]
    }
```

dein Bug scheint ein anderer zu sein und da er auf ein MouseEvent folgt ist er auch schlecht abfangbar,
vielleicht dann resignieren und auf remove in dem Programm verzichten? 
z.B. das alte JTabbedPane durch ein neues ersetzen


----------



## Kiamur (11. Dez 2005)

@ Campino: Wenn es keinen Index 0 geben würde, dann würde ich ja schon die Exception bekommen, wenn ich remove() ausführe, und dann würde ich im Trace wohl auch eine "Line", die auf meinen Sourcecode zeigt als Fehlerquelle angezeigt bekommen. Aber den Gedanken hatte ich auch zuerst. Man sucht den Fehler ja erst mal bei sich selbst.

@SlaterB: Den ersten Link von dir hatte ich auch schon mal durchgelesen. Das heisst ich hatte die Seite auf die "Tony Johnson" in seinem Comment hinweist gefunden. Ich habe dann versucht das Programm nicht unter dem Windows Look and Feel laufen zu lassen, wie es in dem Artikel beschrieben ist. Leider kam die Exception trotzdem. Deshalb habe ich gedacht, dass es nicht am SDK liegt. Aber so abwegig scheint ja der Gedanke dann doch nicht zu sein. Das mit dem neuen JTabbedPane statt remove() werde ich mal ausprobieren. Ist ja eine gute Idee. Aber erst morgen . . . 

Vielen Dank an euch!

Gruß
Maik


----------



## Guest (11. Dez 2005)

Soo, für alle die es interessiert wie man dem Bug aus dem Weg gehen kann:
Ich habe mir zunächst einmal diese Bug-Beschreibung durchgelesen : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075526

Da steht folgendes: A DESCRIPTION OF THE PROBLEM :
With java 1.5.0 when a tab in a JTabbedPane is closed, _while the mouse is over that tab_, a NullPointerException is thrown. This is a regression from java 1.4.2.

Zuerst habe ich gesehen, dass da folgendes steht: State  Closed, fixed

Da habe ich mich schon gefreut, das das Problem wohl mit einer neueren Java Version aus der Welt geschafft ist. Ich hatte das jdk1.5.0_04. In der neueren Version jdk1.5.0_06 wird genau dieser Bug mit der Nummer 5075526 als gefixt aufgeführt. Also habe ich das ganze Prtojekt mit der Version neu erstellt und auch mit der neuen Run Time ausgeführt. Leider war der Bug nach wie vor drin . . . 

Tja, das letzte, was ich dann noch ausprobieren konnte war folgendes: In der Bug Beschreibung steht ja, dass der Fehler auftritt, wenn sich die Maus über dem zu schließenden Tab befindet. Meine Tabs werden geschlossen, indem man in einem Dialog bestätigt, dass sie geschlossen werden sollen. Dieser Dialog befindet sich genau über dem JTabbedPane. Man drückt also in dem Dialog auf OK, was den Dialog verschwinden lässt, und die Maus befindet sich natürlich jetzt direkt auf dem JTabbedPane. Wenn jetzt das Tab unter dem Mauszeiger gelöscht wird kommt der Fehler.
Ich habe jetzt einfach den Bestätigungsdialog außerhalb des JTabbedPanes anzeigen lassen, und die Exceptions sind weg. Das wars.

Jetzt bleibt für mich nur noch die Frage zu klären, warum der Bug bei mir auch noch mit der Version 1.5.0_06 auftaucht, obwohl er doch da eigentlich behoben worden sein soll .  .  .

Gruß
Maik


----------



## Kiamur (11. Dez 2005)

einloggen vergessen . . .


----------

