From 17f71eaa218c30b61e7b42f87cfc8d74964f848a Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Thu, 9 Aug 2018 11:32:07 +0800 Subject: [PATCH] Fixes FileSystemNotFoundException in createZipFileSystem --- .../java/org/jackhuang/hmcl/util/CompressingUtils.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CompressingUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CompressingUtils.java index 6ba4eed65..b19651da7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CompressingUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CompressingUtils.java @@ -19,11 +19,10 @@ package org.jackhuang.hmcl.util; import java.io.File; import java.io.IOException; -import java.net.URI; import java.nio.file.FileSystem; -import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.spi.FileSystemProvider; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -35,6 +34,11 @@ import java.util.Optional; */ public final class CompressingUtils { + private static final FileSystemProvider ZIPFS_PROVIDER = FileSystemProvider.installedProviders().stream() + .filter(it -> "jar".equalsIgnoreCase(it.getScheme())) + .findFirst() + .orElseThrow(() -> new IllegalStateException("Zipfs not supported")); + private CompressingUtils() { } @@ -62,7 +66,7 @@ public final class CompressingUtils { env.put("encoding", encoding); if (useTempFile) env.put("useTempFile", true); - return FileSystems.newFileSystem(URI.create("jar:" + zipFile.toUri()), env); + return ZIPFS_PROVIDER.newFileSystem(zipFile, env); } /**