-
Notifications
You must be signed in to change notification settings - Fork 5
/
2010-10-11-firefox-supports-nested-jar-protocol.html
53 lines (49 loc) · 2.45 KB
/
2010-10-11-firefox-supports-nested-jar-protocol.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---
layout: post
title: 'Firefox supports Nested jar: Protocol!'
date: '2010-10-11T23:48:00.001+09:00'
author: cat_in_136
tags:
- mozilla
last_modified_at: '2010-10-11T23:48:00.250+09:00'
blogger_id: tag:blogger.com,1999:blog-5670234897870215734.post-2765943908214931359
blogger_orig_url: http://cat-in-136.blogspot.com/2010/10/firefox-supports-nested-jar-protocol.html
---
<p>
<code>jar:</code> protocol refer to a file compressed in a <abbr title="Java ARchive">JAR</abbr> (or ZIP) file. Syntax is as following:
</p>
<div>
<code>jar:<var style="background-color:#fdd;color:#000;">url</var>!/<var style="background-color:#dfd;color:#000;">entry</var></code>
</div>
<p>
This URL points to a file <var style="background-color:#dfd;color:#000;">entry</var> in archive file <var style="background-color:#fdd;color:#000;">url</var>. <var style="background-color:#fdd;color:#000;">url</var> can be <em>any</em> protocol, for example, <code>http:</code>, <code>ftp:</code>, <code>file:</code>, etc.
</p>
<div>
<code>jar:<span style="background-color:#fdd;color:#000;">http://example.com/foobar.jar</span>!/<span style="background-color:#dfd;color:#000;">path/to/foobar.txt</span></code>
</div>
<p>
</p>
<h4>Nested <code>jar:</code></h4>
<p>
So, I thought <var style="background-color:#fdd;color:#000;">url</var> can be <code>jar:</code> protocol and I'll call it "Nested <code>jar:</code> protocol."
</p>
<div>
<code>jar:<span style="background-color:#fdd;color:#000;">jar:<var style="border: #f00 solid 1px;">url</var>!/<var style="border: #080 solid 1px;">entry</var></span>!/<var style="background-color:#dfd;color:#000;">entry</var></code>
</div>
<p>
This nested-<code>jar:</code>-protocol URL points to a file <var style="background-color:#dfd;color:#000;">entry</var> in a JAR file <var style="border: #080 solid 1px;">entry</var> in a JAR file <var style="border: #f00 solid 1px;">url</var>.
</p>
<p>
This nested <code>jar:</code> protocol is supported on Firefox (and maybe all of Mozilla/Gecko based applications.)
</p>
<p>
Note that Java does not treat nested <code>jar:</code> protocol. When open the URL, <code>MalformedURLException</code> was thrown.
</p>
{% highlight java %}
URL url = new URL("jar:jar:file:///tmp/test.jar.jar!/test.jar!/test.txt");
InputStream is = url.openStream(); # throws MalformedURLException : "no !/ in spec"
{% endhighlight %}
<h4>Reference</h4>
<ul>
<li><a href="http://docs.sun.com/source/819-0913/author/jar.html#jarprotocol">JAR Files - The JAR: Protocol</a></li>
</ul>