!

jar: URL scheme

[12] jar: URL は、 JAR に含まれるファイルを表します。 JAR の実体は ZIP であるため、一般に ZIP に含まれるファイルを表すために使うこともあります。

仕様書

構文

[7] jar: URL の構文は次のような形となっています >>3

jar:<url>!/{entry}

相対 URL

[15] >>14 によると、 jar: URL は普通の相対URLだけではなく、 ! から始まる URL の扱いについての規則があるようです。

[16] これが実装されているのかは不明です。

[17] そもそも jar:authority が存在せず path/ から始まらない、非階層的URL なので、仕様上の相対URL解決方法に従うとどんな相対URL でも意図通りには解決されません。

[18] WebKitOperaWinIEjar:相対URL に対応していません。

[19] Geckojar:http: までが scheme である場合と同じような相対URL解決を行います。つまり相対URL解決における path の解釈こそ異なりますが、解決の手順としては URL の仕様と同じ方法であり、 >>15 には対応していません。

実装

[3] JarURLConnection (Java 2 Platform SE v1.4.2) (2005-06-21 12:47:28 +09:00 版) http://java.sun.com/j2se/1.4.2/docs/api/java/net/JarURLConnection.html (名無しさん 2007-03-10 03:27:06 +00:00)

[10] Commons VFS - Supported File Systems http://jakarta.apache.org/commons/sandbox/vfs/filesystems.html#Zip%20and%20Jar

[4] Gecko でよく使われています。

[13] MFSA 2007-37: jar: URL スキーマによる XSS 問題 ( 版) http://www.mozilla-japan.org/security/announce/2007/mfsa2007-37.html

jar: URI スキーマのサポートは、application/java-archive または application/x-jar の Content-Type ヘッダで送信されるファイルに制限されました。

[1] >>10

jar:../lib/classes.jar!/META-INF/manifest.mf

[8] >>10

jar:zip:outer.zip!/nested.jar!/somedir

[9] >>10

jar:zip:outer.zip!/nested.jar!/some%21dir

関連

[2] 各種ファイル形式について類似した URL scheme があります。例えば: zip:, tar:, tgz:, tbz2:, gzip:, bz2:, archive:, res:, mhtml:, pack:, archive:

素片識別子との関係

[6] この類の資源については素片識別子を使って表現するべきと考える人もいます >>5

[5] Invalid JAR URIs (Chris Lilley 著, 版) http://lists.w3.org/Archives/Public/www-tag/2003Jul/0005.html

[11] jar: URL などを使うのがよいと考える人達は、 素片識別子の方式では相対URLが機能しないことを問題としています。

[20] 1215235 - Drop support for jar: URIs by default () https://bugzilla.mozilla.org/show_bug.cgi?id=1215235

[21] 1255139 - iNotes not working after upgrade to release 45.0 () https://bugzilla.mozilla.org/show_bug.cgi?id=1255139

[22] jar protocol support has been disabled by default (Reverted) | Firefox Site Compatibility () https://www.fxsitecompat.com/en-CA/docs/2015/jar-protocol-support-has-been-disabled-by-default/