2010-02-16 14 views
16

Używam Eclipse dla Java. Stworzyłem wersję DOM pliku XML. Teraz chcę zmienić atrybut elementu w pliku. Wywołałam metodę, która wywołała metodę w klasie, która kontroluje DOM, i otrzymałem okno dialogowe z informacją, że "Wykrywanie wątków JDI napotkało problem." Przetwarzanie wyjątku asynchronicznej kolejki wątków "podczas debugowania.Ocena wątków JDI napotkała problem

Jestem względną nowicjuszką w Javie i nie natknąłem się na taki błąd, i nie mam pojęcia, co go powoduje.

Jeśli ktoś ma jakieś sugestie co do przyczyny problemu i/lub sposobów, aby to naprawić ...

Dzięki tak dużo!

Odpowiedz

6

Interfejs Java Debug Interface (JDI) jest częścią Java Platform Debugger Architecture. Jeden oczywisty sposób wyzwalania tego wyjątku ma miejsce, gdy metoda obiektu toString() niedbale zwraca null. Jest interesująca dyskusja here. Możesz wypróbować inny debugger i nie zaszkodzi sprawdzić poprawność twojego XML.

+0

co ciekawe, następnym razem, gdy próbowałem uruchomić/debugować program, nie miałem żadnych problemów. – chama

+1

W rzeczywistości kilka dyskusji wspomniało o sporadycznych awariach. To zawsze sprawia, że ​​myślę o problemach z synchronizacją wątków: na przykład odroczoną inicjalizację, która może pojawić się jako "null" w jednym wątku, ale nie w innym. – trashgod

54

Miej oko na wyrażenia "Obserwuj" - jeśli ich nie potrzebujesz, usuń je wszystkie. Czasami niektóre wyrazy zegarka spowodowały dla mnie ten komunikat o błędzie.

Może to również wyjaśnić, dlaczego zdarza się sporadycznie dla ludzi (czasami mają przydziały zegarki, które powodują ten błąd, jednak ponowne uruchomienie lub usunięcie odpowiedniego zegarka może rozwiązać ten problem bez nich nie wiedząc.)

+1

Twoja wskazówka zaoszczędziła mi dużo czasu. Wielkie dzięki. –

+2

Cieszę się, że mogę pomóc - to doprowadzało mnie do szaleństwa. – Anthony

+1

To jest poprawna odpowiedź! – mattboy

1

problem może występuje również, jeśli wyszukiwanie źródła jest niepoprawnie skonfigurowane. Na przykład powiedzmy, że chce się oglądać wyrażenie: foo.bar(). Teraz, jeśli wyszukiwanie źródła jest niepoprawnie skonfigurowane, debugger nie może rozwiązać wiązania dla wyrażenia foo (patrz this eclipse bug). Następnie wywołanie .bar() zakończy się niepowodzeniem z wyjątkiem NullPointerException.

4

Ten błąd pojawia się cicho kilka razy podczas debugowania. Możesz to wyczyścić, usuwając wszystkie instrukcje zegarka i wszystkie punkty przerwania i restartując Eclipse.

0

Ten problem może wystąpić, jeśli masz skonfigurowane "Formatery szczegółów" dla określonych klas (w Eclipse: Java -> Debugowanie -> Formatery szczegółów). Spróbuj je wyłączyć.