public static FileSystem forJar(Path jarFile) { try { return getJarFs(jarFile); } catch (IOException e) { throw new RuntimeException(e); } }
/** Isn't this what {@link Paths#get(URI)} should do? */ public static Path fromUrl(URL url) { try { switch (url.getProtocol()) { case "file": return Paths.get(url.toURI()); case "jar": String[] parts = url.getPath().split("!", 0); Path jarFile = Paths.get(new URI(parts[0]).toURL().getFile()); FileSystem fs = getJarFs(jarFile); return fs.getPath(parts[1].substring(1)); default: throw new IllegalArgumentException("unsupported fs type for '" + url + "'"); } } catch (Exception e) { throw new RuntimeException("Failed to resolve path from " + url, e); } }