jar: protocol refer to a file compressed in a JAR (or ZIP) file. Syntax is as following:


This URL points to a file entry in archive file url. url can be any protocol, for example, http:, ftp:, file:, etc.


Nested jar:

So, I thought url can be jar: protocol and I'll call it "Nested jar: protocol."


This nested-jar:-protocol URL points to a file entry in a JAR file entry in a JAR file url.

This nested jar: protocol is supported on Firefox (and maybe all of Mozilla/Gecko based applications.)

Note that Java does not treat nested jar: protocol. When open the URL, MalformedURLException was thrown.

URL url = new URL("jar:jar:file:///tmp/test.jar.jar!/test.jar!/test.txt");
InputStream is = url.openStream(); # throws MalformedURLException : "no !/ in spec"