JavaFX-11/macOS : DirectoryChooser crashes 'NSObjectNotAvailableException'

标签 java macos javafx macos-catalina javafx-11

我使用openjfx模块开发一个java应用程序。 我现在想使用 DirectoryChooser 让用户选择多个文件作为输入(代码如下)。每次我从 IDE 启动应用程序时,它都会崩溃,但出现以下异常。我所说的崩溃是指完全终止(不是卡住)。

我还尝试了一些示例代码,例如 this找出我的实现是否有任何问题,但我发现的每个样本都给了我同样的问题。

我不确定这是否是一个普遍问题/错误,因为我在 Oracle 错误跟踪器中看到了旧错误,但它们都标记为已修复。

如果有人可以提供一些帮助,我会很高兴。我什至对一种避免 DirectoryChooser(如果有的话)的解决方法感到满意。

重现步骤:

  • 使用 here 中的演示代码创建一个小型应用程序.
  • 运行应用程序
  • 尝试打开目录选择器

背景信息:

  • 操作系统: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 版本号解决了问题。
目前,它似乎适用于 MavenCentral 的 OpenJFX 版本 14-ea+7 和 15-ea+1

最佳答案

  1. 为什么使用过时版本的 JavaFX?当前版本是 13,14 即将发布。 EA 版本已经发布。您还可以将它们与 Java 11 一起使用。
  2. 我使用 JavaFX 13 尝试了您提到的两个示例,它们工作正常。这可能是因为错误已被修复,或者是因为我仍在使用 MacOS 10.14.6 Mojave。

尝试一下 JavaFX 13,然后报告。

关于JavaFX-11/macOS : DirectoryChooser crashes 'NSObjectNotAvailableException' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59990521/

相关文章:

java - 根据子实体的属性值搜索实体的 JPA 标准? (重复连接)

java - Amazon SQS setRegion 方法

JavaFX : why wait cursor needs a new thread?

JavaFX WebView html加载器不加载图像

java - 无法从 Java 主应用程序运行两个 Java FX 实例?

java - 以编程方式将 cron 作业写入 crontab 文件无法运行

java - 如何在 Java 中替换 StringBuilder 中的多个字符?

c# - 单声道下的 WebRequest 不支持 HTTP 协议(protocol)

swift - 检测以太网/wifi 网络变化

macos - 如何启动 AppleScript 应用程序并从另一个 AppleScript 运行 shell 脚本?