import java.util.Map; import java.util.Collections; import java.util.jar.Attributes; import java.util.jar.Manifest; import java.util.jar.JarOutputStream; import java.util.zip.ZipEntry; import java.net.URI; import java.io.BufferedOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; public class JarPathTest2 { public static void main(String[] args) throws IOException { Path jar = Files.createTempFile("path with spaces", ".jar"); Manifest manifest = new Manifest(); manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); try (JarOutputStream jarStream = new JarOutputStream( new BufferedOutputStream(Files.newOutputStream(jar)), manifest)) { ZipEntry entry; entry = new ZipEntry("file1.txt"); jarStream.putNextEntry(entry); jarStream.write("Hello".getBytes(StandardCharsets.US_ASCII)); jarStream.closeEntry(); entry = new ZipEntry("file2.txt"); jarStream.putNextEntry(entry); jarStream.write("world".getBytes(StandardCharsets.US_ASCII)); jarStream.closeEntry(); } URI zipURI = URI.create("jar:" + jar.toUri()); System.out.println(zipURI); Map env = Collections.emptyMap(); try (FileSystem fs = FileSystems.newFileSystem(zipURI, env)) { Path root = fs.getPath("/"); URI uri = root.toUri(); System.out.println(uri); } Files.delete(jar); } }