我正在编写一个正在启动 GUI 应用程序的测试框架。为了能够在 SWT 应用程序的情况下测试这个 GUI,我需要知道它的显示。一般来说,这个显示是由另一个类加载器加载的,因此我通过反射使用 swt Display 类的 findDisplay(Thread t) 方法来完成这个任务。我的代码看起来像这样:
Thread[] threads = new Thread[10];
Thread.enumerate(threads);
Object foundObject = null;
for (Thread t : Arrays.asList(threads)){
foundObject = null;
Class<?> clazz = t.getContextClassLoader().loadClass("org.eclipse.swt.widgets.Display");
final Method method = clazz.getMethod("findDisplay", Thread.class);
foundObject = method.invoke(null, new Object[] {t});
if (foundObject != null) {
System.out.println("yeah, found it!");
break;
}
}
在我看来,这应该在当前线程组中找到每个 Display 类型的对象。但是,尽管 GUI 正在完美启动,但我没有得到任何文本编辑器 RCP 示例。
任何想法出了什么问题或我如何以合理的方式调试它?