Я пишу среду тестирования, которая запускает приложение с графическим интерфейсом. Чтобы иметь возможность протестировать этот графический интерфейс в случае приложения SWT, мне нужно знать, что это дисплей. В общем, это отображение загружается другим загрузчиком классов, поэтому для решения этой задачи я использую метод findDisplay (Thread t) класса отображения swt путем отражения Мой код выглядит примерно так:
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 в текущей группе потоков. Однако я не получаю ничего для примера RCP texteditor, хотя графический интерфейс запускается отлично.
Есть идеи, что происходит не так или как я могу отладить это разумным способом?