Недавно я столкнулся с проблемой с моим приложением Eclipse SWT GUI. Я пытался получить дескриптор окна со следующим кодом:
Display.getDefault().syncExec(()->{
handle = Display.getDefault().getActiveShell().handle;
});
отлично работал на моей 64-битной Windows 10 ОС.
Затем при развертывании того же приложения на 32-битной Windows машина (виртуальная машина, которую я настроил на своем p c, используя Hyper-v), я получаю следующую странную ошибку:
java.lang.NoSuchFieldError: handle
Документация для этого дескриптора говорит:
long org.eclipse.swt.widgets.Control.handle
дескриптор ресурса ОС (Предупреждение: это поле зависит от платформы)
ВАЖНО: Это поле не является частью SWTpubli c API. Он помечен как publi c только для того, чтобы его можно было> совместно использовать в пакетах, предоставляемых SWT. Он недоступен на всех платформах и никогда не должен быть доступен из кода приложения.
Может ли это быть причиной этой проблемы?
Если мы не можем использовать это свойство, каковы альтернативы? Я знаю, что JNI / JNA имеет дело с нативным кодом, насколько я знаю, они все еще полагаются на реализацию SWT.
Спасибо, что нашли время на мой вопрос!
Cheers!