1

我试图从部署在 glassfish 4 上的应用程序中使用truevfs库。如果在独立的 java-se 应用程序中使用下面的代码,它的效果非常好,但是当从 glassfish 内部使用时,它无法查找文件系统提供程序。

这应该工作吗?我有什么选择?

编码:

Path uriPath = new TPath(new URI("http://localhost:8080/mytar.tar"));

try (FileSystem zipfs = FileSystems.newFileSystem(uriPath, null)) {
    Path pathInZipfile = zipfs.getPath("/");    // <-- error thrown here
    ...
}

绒球:

<dependency>
    <groupId>net.java.truevfs</groupId>
    <artifactId>truevfs-profile-default</artifactId>
    <version>0.10.4</version>
    <type>pom</type>
</dependency>

和错误:

Caused by: java.nio.file.ProviderNotFoundException: Provider not found
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:403)
4

1 回答 1

0

我将问题发送到truevfs 邮件列表,图书馆的作者回答:

不确定它是否与此有关,但不需要使用 FileSystems.newFileSystem(Path) 。只需将 TPath 对象传递给任何 Files.* 方法。

他是对的,Files.*直接在 TPath 对象上使用方法效果很好。

于 2013-11-15T05:58:05.503 回答