JavaFX-11/macOS: сбой DirectoryChooser «NSObjectNotAvailableException»

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

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

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

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

Действия для воспроизведения:

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

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

  • ОС: macOS 10.15.2 Каталина
  • 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-ea+7 и 15-ea+1 из MavenCentral


person Newt0n    schedule 30.01.2020    source источник


Ответы (1)


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

Попробуйте JavaFX 13 и дайте отчет.

person mipa    schedule 30.01.2020
comment
Спасибо за предложение. Я начал тестирование с OpenJFX 13 и выше, и кажется, что проблема исправлена, начиная с версии 14-ea+7 (15-ea+1) также работает. Я отредактирую вопрос, чтобы предоставить решение для всех. Спасибо за вашу помощь! - person Newt0n; 31.01.2020