我的RCP应用程序(带有OpenCV java的视频播放器)抛出了着名的:
org.eclipse.swt.SWTError: No more handles
错误
所以现在我找到了Sleak和tutorial
我尝试了第一种方式,但是当我启动应用程序并点击Sleak-View中的按钮时,我得到了: “警告:设备未跟踪资源分配”。
当我以第二种方式执行时(.options文件和eclipse.ini中的-debug(插入befor -vmargs) 我在简洁的视图中得到了一些结果,但它们都是Eclipse Resources ...就像那里说的那样我跟踪了日食...但我不想...
我正在使用带有sleak build的Eclipse 4.3 SR1(RCP)运行4.3 (我已尝试使用4.4版本,但它也无法正常工作)
在我的RCP(e4)应用程序中没有我做的部分
Display display = PlatformUI.createDisplay();
与提议的here类似。
答案 0 :(得分:1)
我刚遇到这个问题并解决了它。
转到调试配置 - >跟踪选项卡。 这里确保您已选择左侧的org.eclipse.ui并选择右侧的跟踪/图形和调试。 现在推出它。在您的RCP中,您现在将获得更多信息。
答案 1 :(得分:0)
将此添加到您的调试配置:
Tracing Tab:
org.eclipse.ui:
debug = true
trace/graphics = true
http://www.vogella.com/tutorials/EclipsePerformance/article.html#performance_sleak
答案 2 :(得分:0)
我最近遇到了同样的问题,并设法找到了解决方案。这是我发现的,谁知道它可能对你有帮助。
在我们的RCP启动时,我们在Application类上调用了PlatformUI.createDisplay(),它连接到对Workbench.createDisplay()的调用。这是正确读取和设置Sleak所需的调试设置的确切位置。
在我们的软件上发生的事情是在上面调用PlatformUI.createDisplay()之前调用了Display.getDefault()。它导致创建一个新的Display对象,该对象被设置为默认对象。此创建没有读取和设置调试设置,因为它发生在不同的路径上。
当我们的代码进入PlatformUI.createDisplay()调用时,它实际上并没有创建新的显示。相反,它返回了先前创建的,不是调试友好的。因此,领导Sleak警告"设备不跟踪资源分配"。
在方法Display.register(显示屏显示)上添加断点帮助我们识别早期创建源并正确更改它。
你可能没有亲自在你的代码上手写createDisplay()调用,但我非常确定那里有一个,因为每个平台都需要一个显示器。
答案 3 :(得分:0)
在这一天的大部分时间都在苦苦挣扎,找到各种过时的食谱和HowTo页面...在其中一个eclipse论坛帖子中,有人引用了这个页面,这对我有用。 (氧气,纯E4独立RCP应用)
https://wiki.eclipse.org/Eclipse4/RCP/FAQ#How_to_use_Sleak_in_e4AP
即使这看起来很奇怪,你必须让你的Eclipse工作台应用程序运行时设置各种标志,然后在调试器中运行你的应用程序时注意你的项目设置。