Я уже обращался к сообществу сообщений об ошибках 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"
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