java应用程序(macOS Catalina)如何请求访问网络卷?
我的应用程序完全用java编写(我们从java8迁移到java11),在High Sierra下运行良好: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
新的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.
对应于向用户显示的对话框中的文本