Тупик IDE NetBeans

Я уже обращался к сообществу сообщений об ошибках NetBeans, прежде чем кто-либо укажет мне туда. У них нет решения.

В каждой среде IDE NetBeans, которую я использую (у меня есть 4 версии (6.9, 6.9.1, 7.0 и последняя экспериментальная сборка) на нескольких компьютерах), они последовательно и предсказуемо заходят в тупик всякий раз, когда я открываю конструктор графического интерфейса для класса (JFrame, JDialog и Panel), если это не первый раз, когда GUI-конструктор этого класса открыт. Кто-нибудь еще сталкивался с этой проблемой? Если да, то нашли ли вы способ исправить это?

Причина


Я обнаружил причину, но до сих пор не нашел решения: в методе initComponents() класса BHFrame моей библиотеки запущен новый поток, который расширяет JFrame и использует NetBeans GUI Builder. NetBeans пытается запустить этот метод при попытке построить графический интерфейс в компоновщике и застревает в бесконечном цикле ожидания. NetBeans сообщает об этом во время дампа потока:

Found one Java-level deadlock:
=============================
"BHFrame.initComponents():  Setting up custColorsEditDialog":
  waiting to lock monitor 0x089178d4 (object 0x1ae148f8, a
javax.swing.MultiUIDefaults),
  which is held by "AWT-EventQueue-1"
"AWT-EventQueue-1":
  waiting to lock monitor 0x0868f6ec (object 0x1a310f18, a
java.awt.Component$AWTTreeLock),
  which is held by "BHFrame.initComponents():  Setting up custColorsEditDialog"

person Ky Leggiero    schedule 18.04.2011    source источник
comment
он когда-нибудь выходит из тупика? Я знаю, вы сказали, что уже просмотрели список ошибок NB, но посмотрите, есть ли этот отчет об ошибке поможет вам   -  person Tim Sparg    schedule 18.04.2011
comment
Это не так, отсюда и термин «тупик». Однажды я даже оставил его включенным на полтора дня. Оно было еще заморожено. - Кроме того, LOL посмотрите на электронную почту пользователя, который отправил его. Это я.   -  person Ky Leggiero    schedule 18.04.2011
comment
Итак, позвольте мне уточнить, построитель графического интерфейса вызывает класс вашей библиотеки, который порождает поток и вызывает построитель графического интерфейса? Я не очень удивлен, что это вызывает тупик, если это так.   -  person Robin Green    schedule 19.04.2011
comment
Похоже, что когда он запускает конструктор графического интерфейса, он просматривает метод initComponents() моего класса BHFrame и пытается его запустить. В этом методе есть новый поток (с именем BHFrame.initComponents(): Setting up custColorsEditDialog), и он сообщает потоку AWT-EventQueue-1 дождаться завершения потока BHFrame.initComponents(): Setting up custColorsEditDialog, который, в свою очередь, ожидает завершения потока AWT-EventQueue-1, и они застревают в тупиковой ситуации. NetBeans не будет отвечать до тех пор, пока потоки не завершатся и не заблокируются.   -  person Ky Leggiero    schedule 19.04.2011


Ответы (1)


Я удалил новый поток, созданный в методе initComponents(), и через некоторое время все вернулось на круги своя.

person Ky Leggiero    schedule 21.04.2011