モジュール java.base
パッケージ java.net

クラスJarURLConnection

java.lang.Object
java.net.URLConnection
java.net.JarURLConnection

public abstract class JarURLConnection extends URLConnection
JAR (Java ARchive)ファイル、またはJARファイル内にあるエントリへのURL接続です。

JAR URLの構文は、次のとおりです。

 jar:<url>!/{entry}
 

たとえば:

jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class

JAR URLは、あるJARファイルを参照するか、あるJARファイル内のエントリを参照する場合に使用するようにしてください。 上記の例は、JARのエントリを参照するJAR URLです。 次のようにエントリ名が省略された場合、そのURLはJARファイルの全体を参照します。jar:http://www.foo.com/bar/baz.jar!/

作成したURLがJAR URLであることがわかっていて、JARに固有の機能が必要である場合には、ジェネリックURLConnectionをJarURLConnectionにキャストするようにしてください。 たとえば、

 URL url = new URL("jar:file:/home/duke/duke.jar!/");
 JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
 Manifest manifest = jarConnection.getManifest();
 

JarURLConnectionインスタンスは、JARファイルからの読取り時にしか使用できません。 このクラスでOutputStreamを取得して対象のJARファイルを変更したりデータを書き込んだりすることはできません。

Jarエントリ
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
Jarファイル
jar:http://www.foo.com/bar/baz.jar!/
Jarディレクトリ
jar:http://www.foo.com/bar/baz.jar!/COM/foo/

!/は、区切り文字です。

new URL(context, spec)を使ったJAR urlの作成では、次のルールが適用されます。

  • コンテキストURLがなく、URLコンストラクタに渡された指定が区切り文字を含まない場合は、そのURLはJarFileを参照していると見なされる。
  • コンテキストURLがある場合は、そのコンテキストURLがJARファイルまたはJarディレクトリを参照していると見なされる。
  • 指定が「/」で始まっている場合は、そのJarディレクトリを無視して、Jarファイルのルートを指定していると見なされる。

    コンテキスト: jar:http://www.foo.com/bar/jar.jar!/、指定:baz/entry.txt
    url:jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
    コンテキスト: jar:http://www.foo.com/bar/jar.jar!/baz、指定:entry.txt
    url:jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
    コンテキスト: jar:http://www.foo.com/bar/jar.jar!/baz、指定:/entry.txt
    url:jar:http://www.foo.com/bar/jar.jar!/entry.txt

導入されたバージョン:
1.2
関連項目: