[12] [DFN[[CODE(URI)@en[[[jar:]]]] [[URL]]]] は、 [[JAR]] に含まれる[[ファイル]]を表します。
[[JAR]] の実体は [[ZIP]] であるため、一般に [[ZIP]] に含まれる[[ファイル]]を表すために使うこともあります。

* 仕様書

- [14] [CITE[JavaHelp 1.0 - Proposed jar: Specification]] ([TIME[2003-03-14 20:51:10 +09:00]] 版) <https://supportweb.cs.bham.ac.uk/docs/java/stdex/javahelp/spec/misc/Jar.html>

* 構文

[7] [CODE(URI)@en[[[jar:]]]] [[URL]] の構文は次のような形となっています [SRC[>>3]]。

[PRE(URI code)[
jar:<url>!/{entry}
]PRE]

* 相対 URL

[15] >>14 によると、 [CODE(URI)@en[[[jar:]]]] [[URL]] は普通の[[相対URL]]だけではなく、
[DFN[[CODE(URI)[!]]]] から始まる [[URL]] の扱いについての規則があるようです。

[16] これが実装されているのかは不明です。

[17] そもそも [CODE(URI)@en[[[jar:]]]]
は [[authority]] が存在せず [[path]] が [CODE(URI)[[[/]]]]
から始まらない、非[[階層的]]な [[URL]] なので、仕様上の[[相対URL]]
の[[解決]]方法に従うとどんな[[相対URL]] でも意図通りには[[解決]]されません。

[18] [[WebKit]]、[[Opera]]、[[WinIE]] は [CODE(URI)@en[[[jar:]]]] の[[相対URL]]
に対応していません。

[19] [[Gecko]] は [CODE(URI)@en[[[jar:http:]]]] までが [[scheme]]
である場合と同じような[[相対URL]]の[[解決]]を行います。つまり[[相対URL]]
の[[解決]]における [[path]] の解釈こそ異なりますが、[[解決]]の手順としては [[URL]]
の仕様と同じ方法であり、 >>15 には対応していません。

* 実装

[3]
[CITE[JarURLConnection (Java 2 Platform SE v1.4.2)]] ([CODE[2005-06-21 12:47:28 +09:00]] 版) <http://java.sun.com/j2se/1.4.2/docs/api/java/net/JarURLConnection.html>
([[名無しさん]] [WEAK[2007-03-10 03:27:06 +00:00]])

[10] [CITE[Commons VFS - Supported File Systems]] <http://jakarta.apache.org/commons/sandbox/vfs/filesystems.html#Zip%20and%20Jar>

[4] [[Gecko]] でよく使われています。

[13] [CITE@ja[MFSA 2007-37: jar: URL スキーマによる XSS 問題]] ([TIME[2011-01-08 20:48:21 +09:00]] 版) <http://www.mozilla-japan.org/security/announce/2007/mfsa2007-37.html>

>jar: URI スキーマのサポートは、application/java-archive または application/x-jar の Content-Type ヘッダで送信されるファイルに制限されました。

* 例

[1] [SRC[>>10]]
[PRE(URI example code)[
jar:../lib/classes.jar!/META-INF/manifest.mf
]PRE]

[8] [SRC[>>10]]
[PRE(URI example code)[
jar:zip:outer.zip!/nested.jar!/somedir
]PRE]

[9] [SRC[>>10]]
[PRE(URI example code)[
jar:zip:outer.zip!/nested.jar!/some%21dir
]PRE]

* 関連

[2]
各種[[ファイル形式]]について類似した [[URL scheme]] があります。例えば:
[CODE(URI)@en[[[zip:]]]],
[CODE(URI)@en[[[tar:]]]], [CODE(URI)@en[[[tgz:]]]],
[CODE(URI)@en[[[tbz2:]]]], [CODE(URI)@en[[[gzip:]]]],
[CODE(URI)@en[[[bz2:]]]], [CODE(URI)@en[[[archive:]]]],
[CODE(URI)@en[[[res:]]]], [CODE(URI)@en[[[mhtml:]]]],
[CODE(URI)@en[[[pack:]]]],
[CODE[archive:]]

** 素片識別子との関係

[6] 
この類の[[資源]]については[[素片識別子]]を使って表現するべきと考える人もいます [SRC[>>5]]。

[5]
[CITE@en[Invalid JAR URIs]] ([[Chris Lilley]] 著, [TIME[2003-07-02 20:13:23 +09:00]] 版)
<http://lists.w3.org/Archives/Public/www-tag/2003Jul/0005.html>

[11] [CODE(URI)@en[[[jar:]]]] [[URL]] などを使うのがよいと考える人達は、
[[素片識別子]]の方式では[[相対URL]]が機能しないことを問題としています。


[20] [CITE@en[1215235 - Drop support for jar: URIs by default]]
([TIME[2017-07-14 22:32:35 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=1215235>

[21] [CITE@en[1255139 - iNotes not working after upgrade to release 45.0]]
([TIME[2017-07-14 22:33:18 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=1255139>

[22] [CITE@en-CA[jar protocol support has been disabled by default (Reverted) | Firefox Site Compatibility]]
([TIME[2017-07-14 11:34:19 +09:00]])
<https://www.fxsitecompat.com/en-CA/docs/2015/jar-protocol-support-has-been-disabled-by-default/>