`

No more handles swt eclipse插件开发

阅读更多

!ENTRY org.eclipse.ui 4 0 2006-08-03 14:16:30.394 
!MESSAGE No more handles 
!STACK 0 
org.eclipse.swt.SWTError: No more handles 
at org.eclipse.swt.SWT.error(SWT.java:2966) 
at org.eclipse.swt.SWT.error(SWT.java:2863) 
at org.eclipse.swt.SWT.error(SWT.java:2834) 
at org.eclipse.swt.widgets.Widget.error(Widget.java:395) 
at org.eclipse.swt.widgets.Control.createHandle(Control.java:482) 

 

1. 解决方法,给Imageg对象创建缓存。方法有很多。下面提供其中一种方法。

ImageRegistry registry = Activator.getDefault().getImageRegistry();

        Image image = registry.get(key);
        if(image == null){
            ImageDescriptor descriptor = getImageDescriptor(key);
            image  = descriptor.createImage();
            registry.put(key, image);
        }
         
        return image;
===============================
就是放到 register 中来使用,同理 ImageDescriptor。。

 

2. 出现这个问题的原因

 

错误原因1:自己创建(new)Image、Font、Cursor等没有自己dispose掉,导致占用的Windows 的 GDI对象句柄非常多,Windows 的 GDI句柄不够用,这个很经常出现,改起来也比较容易

 

 

解决方法1:自己创建后一定要保存这些引用,在适当的时机进行dispose掉,如果是方法内部,最好在finally块中dispose。

 

 

错误原因2:Image没有得到合适的重用,导致句柄过多,虽然这个原因和第一个差不多,但是还是要分别列出一点,这样也可以培养大家狠好的编程经验吧,就是同样一个地方出现的image应该是相同,比如一个TreeViewer显示在一个View里,你现在想在一个Wizard显示这个Treeviewer,如果你是是新建的一个Treeviewer,那就应该使用同样的Provider,这样使得图像都用的同一个,而不会新开辟,这样就能减少GDI句柄的使用。

 

 

解决方法2:使用ImageDescriptor进行重用

 

 

错误原因3:也是我这次遇到的问题,我这次新建的Image大小达15000*4000,可以说是非常大的一张图像,有些计算机是开辟不了这么大的,对于非常大的图像,你打开以后,有时候会提示The image is too large,这说明你的计算机开辟不了这么大的图像。

 

 

解决方法3:适当等比例缩小图像,有时候会是因为你的程序开辟内存太小,在java启动参数扩大内存,至于有没有办法配置windows使其支持更大的图像,至今没有找到,如果谁找到了,请不吝赐教

 

 

提供一点,虽然是no more handle,不代表就一定是没有足够的句柄,也有可能跟第三个一样。

分享到:
评论

相关推荐

    关于Unhandled event loop exception No more handles的两种解决方案

    在使用Eclipse开发工具的过程中,有时会遇到一个较为棘刺的问题——出现“Unhandled event loop exception No more handles”的错误提示。这一错误不仅令人困惑,而且严重影响了Eclipse的正常使用。本文旨在通过分析...

    GUI_handles.zip_GUI_handles_GUI_handles.zip _MATLAB GUI源代码_Matla

    这对于开发复杂的、具有用户交互性的MATLAB应用至关重要。此外,了解"handles"机制还能帮助你在编写MATLAB GUI时实现更高效、更灵活的代码组织。 总的来说,"GUI_handles.zip"提供了一个动手实践的平台,让你能够...

    flex-object-handles.zip_flex

    在Flex开发中,"flex-object-handles.zip_flex"这个压缩包可能包含了关于如何操作和交互Flex中的对象,特别是涉及到对象的移动、编译、放大和缩小功能的代码示例或教程。Flex是一种基于ActionScript和MXML的开源框架...

    Runtime-Transform-Handles可用于Unity场景编辑的插件

    Runtime_Transform_Handles可用于Unity场景编辑的插件

    论文研究-Mozilla缺陷报告仓库特征分析 .pdf

    从给定的文件信息中,我们可以提取以下知识点: 1. 开源软件缺陷报告管理的重要性: 开源软件项目的维护工作关键在于保持产品的实用性和耐用性,其中,缺陷报告仓库管理是一个重要的方面。在大型开源项目中,比如...

    xulrunner-1.9.2.28pre.en-US.linux-x86_64.tar.rar

    org.eclipse.swt.SWTError: No more handles [MOZILLA_FIVE_HOME=''] (java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: no swt-mozilla-gtk-4335 in java.library.path no swt-mozilla-gtk ...

    Runtime Transform Handles

    - Unity Asset Store:寻找和下载已经实现Runtime Transform Handles的第三方插件,以便快速集成到项目中。 - GitHub:查找开源实现,了解代码结构和实现细节,也可以参考并定制自己的版本。 通过以上介绍,我们...

    xulrunner-1.9.2.28pre.en-US.linux-x86_64.tar

    解决org.eclipse.swt.SWTError: No more handles [MOZILLA_FIVE_HOME=''] (java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: no swt-mozilla-gtk-4335 in java.library.path

    java的常见问题及解决方法参照.pdf

    如果在Java应用中使用XULRunner嵌入浏览器,但遇到"Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Could not detect registered XULRunner to use]",你需要确保XULRunner已经正确注册。...

    [原创]实现用VB.Net(C#)开发K3 BOS 插件的真正可行方法

    ### 实现用VB.Net(C#)开发K3 BOS插件的真正可行方法 #### 概述 在金蝶K3 BOS系统中,官方提供的插件开发方式主要是基于VB6,然而随着.NET技术的发展,越来越多的开发者希望能够利用.NET框架下的语言如VB.NET或C#来...

    Runtime Transform Handles,可再unity运行时拖拽旋转物体,可用于制作场景编辑器等功能

    Runtime Transform Handles,可再unity运行时拖拽旋转物体,可用于制作场景编辑器等功能

    linux环境下部署kettle,执行kitchen.sh文件报错后提示安装 libwebkitgtk 所需rpm包

    kettle-linux环境下部署kettle,执行kitchen.sh文件报错后安装 libwebkitgtk,提示没有可用软件包libwebkitgtk 详细流程:https://blog.csdn.net/m0_37618809/article/details/81015492#commentBox

    java的常见问题及解决方法定义.pdf

    在Java应用中嵌入浏览器时,如果遇到“Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Could not detect registered XULRunner to use]”的异常,意味着XULRunner未注册。在Windows环境下...

    objecthandles_demo.rar

    4. `.settings`:这个目录可能包含更多的项目特定设置,针对Eclipse或其他IDE的插件。 5. `src`:这是一个常见的源代码目录,里面包含了项目的所有源代码文件,如ActionScript类文件或者MXML组件。 综合以上信息,...

    leaked-handles:检测节点中泄漏的任何句柄

    no of handles 1 timer handle (`setTimeout(any, 1000)`) timer handle leaked at one of: at Test.t (/home/raynos/uber/leaked-handles/test/leak-timer.js:10:17) timer listener function any() {} no of ...

    jquery的imgareaselect截图插件

    在网页开发中,我们常常需要实现图片的裁剪功能,以便用户可以自由选择感兴趣的部分进行保存或处理。jQuery的imgAreaSelect插件为此提供了一个简单易用的解决方案。这篇文章将深入探讨imgAreaSelect插件的原理、使用...

    VisualSVN for Visual Studio 2022插件

    Visual Studio 2022 visualSvn 插件 亲测可用 如果你下载慢,就可以来这边下载。官方的下载速度太慢,真的等的没有耐心 VisualSVN is a professional grade Subversion integration plug-in for Visual Studio. Key...

    Slack real names + handles-crx插件

    语言:English (United States) 在真实姓名旁边显示松弛句柄。 在真实姓名旁边显示Slack句柄。 这在大型社区Slack上特别有用,因为您不一定会通过句柄认识每个人。 确保在首选项的“消息和媒体”部分中选中了“显示...

    VB二次开发Bartender示例.rar_bartender_bartender 开发_boy3it_vb bartender

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim app As New BarTender.Application Try ' 打开标签模板 app.Documents.Open("C:\path\to\label.btw") ' 获取第一...

    flex objecthandles一个很不错的拖拽伸缩控件

    在Flex编程领域,ObjectHandles是一个非常实用的组件,尤其对于新手开发者来说,它提供了一种简单易用的方式来实现拖拽和伸缩功能。这个组件能够帮助用户交互地调整对象的位置和大小,使得UI设计变得更加灵活和动态...

Global site tag (gtag.js) - Google Analytics