java - 我可以以只读模式打开 zip 文件系统吗?
问题描述
我正在尝试统一代码以列出文件,无论它们是在目录中还是在类路径中。
我可以获取资源位置的 URL:
URI uri = FontManagerTestUtils.class.getResource("/fonts").toURI();
FileSystem fileSystem =
FileSystems.newFileSystem(uri, Collections.emptyMap());
但是安全经理不喜欢它:
java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/tester/.gradle/caches/modules-2/files-2.1/com.acme.utilities/acme-utils/2.0.4/2c3dd60154b9f63c52ee0defe82422c2987f69b5/acme-utils-2.0.4.jar" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
at sun.nio.fs.UnixPath.checkWrite(UnixPath.java:801)
at sun.nio.fs.UnixFileSystemProvider.checkAccess(UnixFileSystemProvider.java:294)
at java.nio.file.Files.isAccessible(Files.java:2455)
at java.nio.file.Files.isWritable(Files.java:2521)
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:125)
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:117)
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:326)
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:276)
不过,我并不特别打算写回 jar,而且我的安全策略确实允许从类路径上的 jar 文件中读取,所以有没有办法告诉它不要以写访问权限打开它?
解决方案
推荐阅读
- sql - 来自 SQL / Impala 中脚本的 JOIN 查询
- bash - 只有一些并行步骤的作业数组和 shell 脚本
- objective-c - XPC 客户端等待服务加载
- c++ - 为什么 Glew 在 MacOS Catalina 中找不到 OpenGL 标头?
- linux - 每 5 分钟运行一次任务,但不要在星期一 9 到星期四下午 1 点之间运行
- java - int 无法转换为 2D 数组的 int[][] 错误
- laravel - CSRF 令牌与 laravel 和 pusher 不匹配
- c - 我们如何在c中调用汇编函数?
- kotlin - kotlin 循环遍历 2 个不同长度的列表
- monaco-editor - 在光标位置访问类型定义?