Fixes FileSystemNotFoundException in createZipFileSystem

This commit is contained in:
yushijinhun 2018-08-09 11:32:07 +08:00
parent 3a294e354a
commit 17f71eaa21
No known key found for this signature in database
GPG Key ID: 5BC167F73EA558E4

View File

@ -19,11 +19,10 @@ package org.jackhuang.hmcl.util;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI;
import java.nio.file.FileSystem; import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.spi.FileSystemProvider;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ -35,6 +34,11 @@ import java.util.Optional;
*/ */
public final class CompressingUtils { 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() { private CompressingUtils() {
} }
@ -62,7 +66,7 @@ public final class CompressingUtils {
env.put("encoding", encoding); env.put("encoding", encoding);
if (useTempFile) if (useTempFile)
env.put("useTempFile", true); env.put("useTempFile", true);
return FileSystems.newFileSystem(URI.create("jar:" + zipFile.toUri()), env); return ZIPFS_PROVIDER.newFileSystem(zipFile, env);
} }
/** /**