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

How to allow JAVA Web Start application to access file system on macOS Catalina if it is started by double clicking on JNLP file?

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

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

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

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

我 运行 遇到了类似的问题 运行 遗留 .jnlp 应用程序。我能够通过简单地从 CLI 调用应用程序来绕过它 (iTerm/Terminal/etc.) :

# javaws filename.jnlp

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

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

中安装这些应用程序

我们可以通过向 /System/Library/CoreServices/Java Web Start.app

授予完整磁盘访问权限来解决此问题

对我来说,安装不同版本的 Java 解决了问题。

我在 OSX Catalina 10.15.7 上遇到了同样的问题。我能够通过首先设置 JAVA_HOME.

来启动 jnlp 文件
export JAVA_HOME=$(/usr/libexec/java_home)
javaws /path/to/file.jnlp