JavaFX-11/macOS:DirectoryChooser 崩溃 'NSObjectNotAvailableException'
JavaFX-11/macOS: DirectoryChooser crashes 'NSObjectNotAvailableException'
我使用 openjfx
模块开发了一个 java 应用程序。
我现在想使用 DirectoryChooser
让用户 select 几个文件作为输入(下面的代码)。每次我从 IDE 启动应用程序时,它都会崩溃,但出现以下异常。我所说的崩溃是指完全终止(不是冻结)。
我还尝试了一些示例代码,例如 this 来确定我的实现是否有任何问题,但我发现的每个示例都给了我同样的问题。
我不确定这是否是一般性问题 issue/bug 因为我在 Oracle 错误跟踪器中看到了旧错误,但它们都标记为已修复。
如果有人可以提供一些帮助,我将很高兴。如果有的话,我什至会对避免 DirectoryChooser
的解决方法感到满意。
重现步骤:
- 使用 here 中的演示代码创建一个小应用程序。
- 运行 申请
- 尝试打开目录选择器
背景资料:
- OS: 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 版本号解决了问题。
目前,它似乎适用于来自 MavenCentral
的 OpenJFX 版本 14-ea+7 和 15-ea+1
- 为什么使用 JavaFX 的过时版本?当前版本是 13,14 即将推出。 EA 版本已经可用。您也可以将它们与 Java 11.
一起使用
- 我尝试了您在 JavaFX 13 中提到的两个示例,它们都没有问题。这可能是由于错误已修复或由于我仍在使用 MacOS 10.14.6 Mojave。
试用 JavaFX 13,然后反馈。
我使用 openjfx
模块开发了一个 java 应用程序。
我现在想使用 DirectoryChooser
让用户 select 几个文件作为输入(下面的代码)。每次我从 IDE 启动应用程序时,它都会崩溃,但出现以下异常。我所说的崩溃是指完全终止(不是冻结)。
我还尝试了一些示例代码,例如 this 来确定我的实现是否有任何问题,但我发现的每个示例都给了我同样的问题。
我不确定这是否是一般性问题 issue/bug 因为我在 Oracle 错误跟踪器中看到了旧错误,但它们都标记为已修复。
如果有人可以提供一些帮助,我将很高兴。如果有的话,我什至会对避免 DirectoryChooser
的解决方法感到满意。
重现步骤:
- 使用 here 中的演示代码创建一个小应用程序。
- 运行 申请
- 尝试打开目录选择器
背景资料:
- OS: 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 版本号解决了问题。
目前,它似乎适用于来自 MavenCentral
- 为什么使用 JavaFX 的过时版本?当前版本是 13,14 即将推出。 EA 版本已经可用。您也可以将它们与 Java 11. 一起使用
- 我尝试了您在 JavaFX 13 中提到的两个示例,它们都没有问题。这可能是由于错误已修复或由于我仍在使用 MacOS 10.14.6 Mojave。
试用 JavaFX 13,然后反馈。