__NSAutoreleaseNoPool在SWING应用程序中抛出

时间:2011-02-12 15:59:24

标签: java macos swing

我真的在这里傻眼了(或者只是“哑巴”)。我正在使用JRE系统库(JVM内容(MacOS X默认),Hibernate 3.0和Eclipse Helios中的MigLayout)在我相对较新的Mac上构建一个简单的Java Swing应用程序。事情进展顺利,直到我开始看到以下错误消息这可以防止GUI甚至呈现。

2011-02-12 09:40:27.842 java[809:903] [Java CocoaComponent compatibility mode]: Enabled
2011-02-12 09:40:27.843 java[809:903] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000
2011-02-12 09:41:08.355 java[809:903] *** __NSAutoreleaseNoPool(): Object 0x1001575c0 of class NSConcreteMapTableValueEnumerator autoreleased with no pool in place - just leaking

当我使用这个简单的代码实例化JButton时,抛出前两行:

 private JButton button = new JButton();

在Main()中调用我的Controller构造函数结束时抛出最后一行。

public static void main(String[] args) {

         // Creates a model of the system logic.
    LeapsAndBoundsModel model = new LeapsAndBoundsModel();

        // Creaties a view for the system logic.
    LeapsAndBoundsView leapsAndBoundsView = new LeapsAndBoundsView();

        // Creates a controller that links the two.
    LeapsAndBoundsController controller = new LeapsAndBoundsController(model, leapsAndBoundsView);
      }

我已经用Google搜索了这个问题并发现很多人遇到了同样的问题,但几乎所有人都使用CocoaComponent for iPhone应用程序进行编码。这是一个简单的GUI,它使用Hibernate将信息保存到本地化的Derby数据库。

我已经尝试了以下建议而没有成功:

//Set the CocoaComponent CompatibilityMode to "False"
System.setProperty( "com.apple.eawt.CocoaComponent.CompatibilityMode", "false" );

// Use the "invokeLater" method within Main() construct
        SwingUtilities.invokeLater( new Runnable() {

            public void run() {
                 doIt();
            }       
        });

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不确定,你是否在Eclipse中显示了Swing? 因为这些错误通常是SWT中的错误(由Eclipse使用)。比较错误: https://bugs.eclipse.org/bugs/show_bug.cgi?id=211361https://bugs.eclipse.org/bugs/show_bug.cgi?id=106619

您可以尝试升级eclipse,或检查用于启动Eclipse的参数。