当前位置: 首页 > 面试题库 >

创建资源路径时从ZipFileSystemProvider获取FileSystemNotFoundException

慕高阳
2023-03-14
问题内容

我有一个Maven项目,并且在一种方法内想在我的资源文件夹中为目录创建路径。这样做是这样的:

try {
    final URI uri = getClass().getResource("/my-folder").toURI();
    Path myFolderPath = Paths.get(uri);
} catch (final URISyntaxException e) {
    ...
}

生成的URI看起来像jar:file:/C:/path/to/my/project.jar!/my-folder

stacktrace如下:

Exception in thread "pool-4-thread-1" java.nio.file.FileSystemNotFoundException
    at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
    at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
    at java.nio.file.Paths.get(Paths.java:143)

URI似乎是有效的。之前的部分!指向生成的jar文件,之后的部分指向my- folder存档的根目录。在创建资源路径之前,我已经使用了此说明。为什么现在我要例外?


问题答案:

您需要先创建文件系统,然后才能访问zip之类的路径

final URI uri = getClass().getResource("/my-folder").toURI();
Map<String, String> env = new HashMap<>(); 
env.put("create", "true");
FileSystem zipfs = FileSystems.newFileSystem(uri, env);
Path myFolderPath = Paths.get(uri);

这不会自动完成。

参见http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html



 类似资料:
  • 我正在使用Eclipse Plugin-in-project开发一个Eclipse插件,它将在工具栏中添加一个菜单项。 请帮我解决这个问题!

  • 我也试着做 而我不断得到这个结果。

  • 问题内容: 我正在寻找一种从给定的目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录x/y/z包含文件和子目录,应该返回一个包含下列字符串:, 。 它应同时适用于文件系统和jar中的资源。 我知道我可以用和 编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是什么?和堆栈都是可行的。 问题答案: 自定义扫描仪 实施自己的扫描仪。例如:

  • 我正在编写hibernate dto映射osgi包(用于glassfish),这个包没有看到来自类路径的资源。 清单文件: 无法从sqljdbc4.jar访问文件,错误: 但这个库存在于导出的jar文件中。 此外,我无法通过类路径访问hibernate配置文件和映射文件(类未找到和资源未找到异常也)。但下一个代码有效: 我试图调用 在sys out中可以看到: 搜索了捆绑类路径选项,但我的清单似乎

  • 本文将介绍 Weex 中 uri(url) 的用法。包括使用图像、字体等资源,处理相对路径以及如何访问本地及打包的资源文件。 Schemes 本地资源 Weex SDK 提供 local scheme 来访问打包在应用程序中的资源,此 scheme 无法在 H5 环境下使用。目前,开发者可以在 image 组件和字体文件中使用本地资源。 在 iOS 中,Weex 会在 bundle resourc

  • 问题内容: 我正在尝试“组织导入”或尝试访问任何类属性时,资源不在项目的构建路径上。我正在用ant构建我的项目。我试图在javabuilpath-> Projects中配置我的构建路径,但是它没有向我显示我的src文件夹。由于以下原因,我无法使用快速帮助(ctrl +空格)和类相关的属性同样的原因,在编写代码时也不会显示任何语法错误。 请帮我。 谢谢 问题答案: 我自己碰到了这个问题,这令人困惑。