Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java应用程序(macOS Catalina)如何请求访问网络卷?_Java_File Permissions_Macos Catalina_Disk - Fatal编程技术网

java应用程序(macOS Catalina)如何请求访问网络卷?

java应用程序(macOS Catalina)如何请求访问网络卷?,java,file-permissions,macos-catalina,disk,Java,File Permissions,Macos Catalina,Disk,我的应用程序完全用java编写(我们从java8迁移到java11),在High Sierra下运行良好: 新的RandomAccessFile(网络卷“rws”上的文件)获得访问权并继续执行 在Catalina下运行时,失败 java.io.FileNotFoundException:/Volumes/messages/xyz/FILE.xdt(不允许操作) 我知道任何试图访问网络卷的应用程序都需要特殊权限,我在系统首选项中查看了它们,可以使用tccutil reset SystemPolic

我的应用程序完全用java编写(我们从java8迁移到java11),在High Sierra下运行良好:
新的RandomAccessFile(网络卷“rws”上的文件)
获得访问权并继续执行

在Catalina下运行时,
失败
java.io.FileNotFoundException:/Volumes/messages/xyz/FILE.xdt(不允许操作)

我知道任何试图访问网络卷的应用程序都需要特殊权限,我在系统首选项中查看了它们,可以使用
tccutil reset SystemPolicyNetworkVolumes[bundle\u id]
删除它们以进行重复测试

java代码如何正确地向用户请求访问权,以便继续处理

到目前为止我所做的:

  • 将代码更改为
    AccessController.doPrivileged((PrivilegedExceptionAction)(->新的随机访问文件(文件,“rws”)
    这导致使用IntelliJ运行的JUnitTest通过对话请求权限
    IntelliJ IDEA中的应用程序请求访问网络卷上的文件


然后,测试成功地在网络卷上执行了所需的操作
其效果是系统首选项中显示的权限符合预期:
存在访问网络卷的权限

  • 添加到Info.plist中的条目
    NSNetworkVolumesUsageDescription@@bundle\u name@@benötigt Zugriff auf ein Netzwerkvolume.

    对应于向用户显示的对话框中的文本
但还是少了一些东西。应用程序未请求权限,因此操作失败。IntelliJ做了一些我到目前为止还没有弄明白的事情