如果通过双击 JNLP 文件启动 JAVA Web Start 应用程序,如何允许它访问 macOS Catalina 上的文件系统?

Ped*_*dja 4 java macos jnlp java-web-start

使用 macOS Catalina 时,我们遇到以下问题:当应用程序通过双击 JNLP 文件启动时和通过双击安装在桌面上的快捷方式启动时,打开 Java Web Start 应用程序的行为不同。

在第一种情况下(双击下载的 JNLP 文件)应用程序打开时没有访问文件系统的权限 - 尝试以 JAVA 代码获取用户桌面目录中的目录列表总是返回 null。不会向用户显示任何要求访问文件系统的权限的提示。这不是预期的行为。

在第二种情况下(从桌面快捷方式启动),首先提示用户应用程序正在尝试访问文件系统并要求获得许可。当用户允许应用程序访问文件时 - 应用程序正确读取用户的桌面目录。这是预期的行为。

有解决方法吗?如果通过双击JNLP文件启动Catalina上的Web启动应用程序,我们如何使Web启动应用程序访问文件系统(这是应用程序至少第一次启动的方式)?

小智 7

我在运行旧版 .jnlp 应用程序时遇到了类似的问题。我可以通过简单地从 CLI (iTerm/Terminal/etc.) 调用应用程序来解决它:

# javaws filename.jnlp
Run Code Online (Sandbox Code Playgroud)

根本原因是 macOS 10.15 (Catalina) 现在需要专门授予非 Apple 应用程序“完整磁盘访问”权限。查看thisthis了解详情。使用那里的解释,我将 /usr/bin/javaws(以及其他 java 二进制文件,如 java 和 appletviewer)添加到“完整磁盘访问”中,但这并没有解决问题。

基于较旧的线程,似乎如果应用程序的路径不在 /Applications/ 下(在这种情况下,java 和 javaws 在 /System/ 下而不是 /Applications/ 下),则不支持全盘访问。因此,Apple 很可能需要提供修复程序,以允许从 UI 运行这些应用程序。