"Swing-Shell" java.lang.InternalError: Не удалось инициализировать COM: HRESULT = 0x80010106
У меня есть приложение Java 9, которое я пытаюсь упаковать для Windows Store. Странно, что он работает так, как ожидалось, когда я запускаю пусковую установку exe
напрямую, но я получаю следующую странную ошибку при запуске запуска с помощью пакета APPX:
Exception in thread "Swing-Shell" java.lang.InternalError: Could not initialize COM: HRESULT=0x80010106
at java.desktop/sun.awt.shell.Win32ShellFolderManager2.initializeCom(Native Method)
at java.desktop/sun.awt.shell.Win32ShellFolderManager2$ComInvoker$1.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
HRESULT=0x80010106
означает RPC_E_CHANGED_MODE
, который, я думаю, означает, что COM как-то уже инициализирован в режиме MTA. Но почему это только проблема в изолированной среде Windows Bridge? Может ли Windows Bridge каким-то образом предварительно инициализировать COM каким-то образом?
Я не уверен, что это проблема Java 9 или проблема с Desktop Bridge, или и то, и другое. Кто-нибудь есть идеи о том, как определить причину проблемы или обходной путь?
Я сделал минимальный примерный проект, чтобы воспроизвести проблему: https://github.com/rednoah/JDK-8189938
TL; DR приложение работает, когда выполняется напрямую, но не при запуске через APPX-пусковую установку. Почему?