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

如果双击JNLP文件启动JavaWebStart应用程序,如何允许它访问macOS Catalina上的文件系统?,java,macos,java-web-start,jnlp,Java,Macos,Java Web Start,Jnlp,对于macOS Catalina,我们遇到了以下问题:当应用程序通过双击JNLP文件启动时,以及当应用程序通过双击桌面上安装的快捷方式启动时,打开Java Web Start应用程序的行为不同 在第一种情况下(双击下载的JNLP文件),应用程序在没有访问文件系统权限的情况下打开-尝试以JAVA代码获取用户桌面目录中的目录列表总是返回null。没有提示用户请求访问文件系统的任何权限。这不是预期的行为 在第二种情况下(从桌面快捷方式启动),首先提示用户应用程序正在尝试访问文件系统,并请求用户授予权限

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

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

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


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

我在运行legacy.JNLP应用程序时遇到了类似的问题。我只需从CLI(iTerm/Terminal/etc)调用应用程序就可以绕过它:

根本原因是macOS 10.15(Catalina)现在要求非苹果应用程序被特别授予“完全磁盘访问”权限。查看并获取详细信息。根据这里的解释,我在“完整磁盘访问”中添加了/usr/bin/javaws(以及其他java二进制文件,如java和appletviewer),但这并没有解决问题


基于,如果应用程序的路径不在/Applications/(在本例中,java和javaws在/System/下,而不是在/Applications/)下,那么完整的磁盘访问就不受尊重。因此,苹果很可能需要提供一个修复程序,以允许从UI运行这些应用程序。

我们能够通过授予
/System/Library/CoreServices/Java Web Start.app的完整磁盘访问权限来解决这个问题。
对我来说,通过安装不同版本的Java解决了这个问题。

谢谢!从终点站开始对我来说也很有效。我们可以向我们的客户推荐它作为一种解决方法,直到Catalina得到修复,或者直到我们不再使用Java WS,因为它将被弃用……很抱歉,我没有完全理解这一点。那么这是否意味着双击JNLP(OPs问题中的第一个案例)不会由Javaws启动呢?如果没有,那么它是如何启动的?JNLP是如何启动的。但是,一旦启动,它就无法在mac OS上读取/写入磁盘上的文件。您可以通过向“/System/Library/CoreServices/javawebstart.app”提供“完整磁盘访问”(系统首选项>安全和隐私)来绕过它。旁注:该解决方案在2019年10月新发布的MacOS Catalina中不起作用(当时的解决方案是从命令行启动jnlp文件,例如“java”)。如何做到这一点?
# javaws filename.jnlp