在别人指点我之前,我已经去了NetBeans bug报告社区。他们没有解决办法。
在我使用的每一个NetBeans IDE(我有4个版本(6.9,6.9.1,7.0和最新的实验版本)在多台计算机上),他们一致和可预见地进入死锁,每当我打开一个类的GUI构建器(JFrame, JDialog和Panel),除非它是第一次类的GUI构建器已经打开。还有其他人遇到过这个问题吗?如果是这样,你找到解决方法了吗?
的原因我发现了原因,但仍然没有解决方案:在我的库的类BHFrame
的initComponents()
方法中启动了一个新线程,它扩展了JFrame
并使用NetBeans GUI Builder。NetBeans尝试在构建器中构建GUI时运行此方法,并锁定在无限循环中等待。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()
方法中生成的新线程,过了一会儿,一切都恢复正常