kostenloser Webspace werbefrei: lima-city


Wortkarge Error-Message

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    stahlsender

    stahlsender hat kostenlosen Webspace.

    Hi Forum,

    mein Programm stockt an irgendeiner Stelle und die IDE (Netbeans) gibt von sich:

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException

    Die Fehlermeldung sagt mir etwas, nur bin ich gewohnt, dass Netbeans mir das betreffende Modul, die auslösende Programzeile und die unpassende Index-Zahl nennt. In diesem Fall steht aber nichts von dem und ich steh' völlig auf dem Schlauch, wo ich suchen soll. Ich würde gerne Beispielcode posten, aber das Programm ist inzwischen so lang und komplex, und ohne jeden Anhaltspunkt kann ich nicht abschätzen, welche Codeteile hier von Bedeutung sind. Meine Hoffnung wäre, dass man auf irgend eine Weise eine etwas informativere Fehlermeldung erhalten könnte. Wisst Ihr Rat ???
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich würde mal ein paar Breakpoints setzen und dadurch rausfinden wann es hängt. Aber das sieht mir nach einem Fehler in AWT aus, den du vllt ausgelöst hast, aber der scheinbar eher ein Bug in AWT ist.
  4. lol das ist kein Bug omg.
    Ohne Code ist es schwer zu sagen. Daher rate ich mal drauf los bzw. gebe mal ein Beispiel an.

    Vermutlich verwendest du Swing und eine Datenstruktur die Daten hält. Und einen Thread zum zeichnen und einen anderen der sich um die Daten kümmert. Mit den Swing Sachen zeichnest du irgendwas und nimmst die Daten aus der Datenstruktur zB einer Liste. Dann löschst du was aus der List mit dem anderen Thread aber die Swing Sachen wissen davon nix. Die denken immer noch, dass da was drin ist. Das ist aber nicht so - > exception.

    Swing ist eben nicht Thread sicher, darum musst du dich selber kümmern.
  5. Es hat tatsächlich mit hoher Wahrscheinlichkeit was mit der Threadunsicherheit von Swing zu tun, aber damit, dass zwei Threads auf eine nicht synchonisierte Resource in Swing zugreifen. Zum Beispiel zwei Threads gleichzeitig ein Element hinzufügen oder Beschriftung ändern wollen oder ähnliches. Bei der DAtenstruktur müsste Swing ja auch was mit der zu tun haben und ich seh nicht wie das ghen soll. Mit der Datenstruktur hantieren doch nur die eigenen Threads.
  6. jaein.

    Was ist, wenn ich in der Datenstruktur Swing Objekte halte die ich anzeigen will. Dann zeige ich diese an und lösche später welche. Die "Anzeige" weiß ohne update davon nix.

    Aber du hast recht, mein Beispiel ist nicht eindeutig. Deine Erweiterung bringt es besser auf den Punkt.

    Beitrag zuletzt geändert: 6.2.2012 18:27:34 von ener
  7. Wie ener schon sagte hast du ein Problem in deinen Threads. Wenn deine Threads auf gemeinsam genutzte Daten zugreifen musst du den Zugriff durch Semaphoren schützen. Aber wenn du mit Threads arbeitest, solltest du das denke ich wissen.

    Falls du es doch nicht weisst: Semaphoren schützen kritische Bereiche. Kritische Bereiche sind diejenigen in denen du auf gemeinsam verwendete Daten zugreifst.
    Angenommen du hast ein Programm mit 2 Threads und einem globalen Vektor.
    Thread 1 befindet sich in einer schleife, die alle objekte im Vektor durchgeht.(etwas ausliest oder sonstiges damit anstellt)
    Während Thread 1 noch nicht mit der Schleife fertig ist macht Thread2 z.b. aufräumarbeiten und löscht ein objekt aus dem Vektor oder auch mehrere. Schon hast du deine ArrayOutOfBoundsException.
    Ein Semaphor bietet dir die Möglichkeit ohne Busy Waiting dafür zu sorgen, dass Thread2 erst in dem vektor aufräumt wenn thread1 fertig ist, bzw thread1 erst liest wenn fertig aufgeräumt ist.

    Schau nochmal genau in deine Threads welche Variablen/Objekte im Thread deklariert sind(lokale Threadvariablen) und auf welche Variable/Objekte oder auch Dateien deine Threads zugreifen, die nicht exklusiv von einem Thread genutzt werden.
    Dann setz dir in deinen Threads mal Breakpoints um zu schauen wo genau die Exeption eintritt.

    Beitrag zuletzt geändert: 6.2.2012 23:33:11 von reimenseimen
  8. Grundsätzlich solltest du von deinem Compiler so eine Antwort kriegen:

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.charAt(String.java:558)
    at Test.ausgabe(Test.java:5)
    at Test.main(Test.java:9)

    dann solltest du sehen in welcher Zeile er auf eine Variable ausser Range zugreifen will.
    Ausserdem wäre es hilfreich den Programmcode zu sehen.
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    madeye schrieb:
    Grundsätzlich solltest du von deinem Compiler so eine Antwort kriegen:

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.charAt(String.java:558)
    at Test.ausgabe(Test.java:5)
    at Test.main(Test.java:9)
    Das Problem ist ja gerade, dass diese Meldung NICHT so kommt.

    Wenn du glaubst den Bereich zu kennen wo der Fehler auftritt, kannst du um den Bereich ein
    try { } catch
    legen. Wenn der Fehler in diesem Bereich auftritt wird er in catch gefangen und DANN solltest du eine genauere Beschreibung bekommen.

    madeye schrieb:
    Ausserdem wäre es hilfreich den Programmcode zu sehen.
  10. alias-jongleur

    alias-jongleur hat kostenlosen Webspace.

    Sogar wenn es vllt nicht performance-mäßig gut ist, aber einige system.out.print(ln) setzten könnte vllt hilfreich sein, dann erkennst schnell wo er hingeht, und wann er aufhört zu gehen

    mfg jongleur
  11. Dann sollte er doch lieber gleich ein Logging-System verwenden. Ist wenig schwerer als ein System.out.print . Aber dann brauch er nämlich am Ende nicht alle unnötigen System.out.print Sachen wieder löschen. Sondern nur das Level des Loggers ändern und schon ist Ruhe im Karton.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!