JavaFX-11 / macOS: DirectoryChooser аварийно завершает работу «NSObjectNotAvailableException» - PullRequest
1 голос
/ 30 января 2020

Я разрабатываю приложение java, используя openjfx модули. Теперь я хочу использовать DirectoryChooser, чтобы позволить пользователю выбрать несколько файлов в качестве входных данных (код ниже). Каждый раз, когда я запускаю приложение из IDE, происходит сбой, за исключением ниже. Под падением я подразумеваю полное окончание (не замораживание).

Я также попробовал некоторый пример кода, такой как this , чтобы выяснить, есть ли что-то не так с моей реализацией, но каждый обнаруженный мной пример вызывал ту же проблему.

Я не уверен, является ли это общей проблемой / ошибкой, потому что я видел старые ошибки в oracle баг-трекере, но все они отмечены как исправленные.

Я был бы рад, если бы кто-то мог помочь с этим. Я бы даже был рад обходному пути, который просто избегает DirectoryChooser, если таковой имеется.

Шаги для воспроизведения :

  • Создайте небольшое приложение с демонстрационным кодом из здесь .
  • запустите приложение
  • попробуйте открыть каталог выбора

Справочная информация :

  • ОС: macOS 10.15.2 Catalina
  • IDE: intelliJ IDEA Ultimate 2019.3

Исключение

2020-01-30 17:18:31.288 java[49749:1319417] *** Terminating app due to uncaught exception 'NSObjectNotAvailableException', reason: 'GlassOpenPanel is not a supported subclass for sandboxing'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff364ea8ab __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff6c75b805 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff364ea701 +[NSException raise:format:] + 189
    3   AppKit                              0x00007fff33d43aa9 +[NSSavePanel(Instantiation) _crunchyRawUnbonedPanel] + 368
    4   libglass.dylib                      0x00000001370a2ba6 Java_com_sun_glass_ui_mac_MacCommonDialogs__1showFolderChooser + 358
    5   ???                                 0x0000000117695950 0x0 + 4687747408
    6   ???                                 0x000000011768fa00 0x0 + 4687723008
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Решение

По предложению mipa увеличение номера версии OpenJFX решило проблему.
На данный момент, похоже, работает для OpenJFX версии 14-еа + 7 и 15-еа + 1 с MavenCentral

1 Ответ

1 голос
/ 30 января 2020
  1. Почему вы используете устаревшую версию JavaFX? Текущая версия 13 и 14 выходит в ближайшее время. Релизы EA уже доступны. Вы также можете использовать их с Java 11.
  2. Я попробовал два примера, которые вы упомянули с JavaFX 13, и они работали без проблем. Это может быть связано с тем, что ошибка была исправлена, или с тем, что я все еще использую MacOS 10.14.6 Mojave.

Попробуйте JavaFX 13 и затем отзовитесь.

...