モジュール 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
関連項目:
URL, URLConnection, JarFile, JarInputStream, Manifest, ZipEntry
  • フィールド詳細

    • jarFileURLConnection

      protected URLConnection jarFileURLConnection
      接続が開始された場合のJARファイルURLへの接続。 これはconnectによって設定されるべきです。
  • コンストラクタの詳細

    • JarURLConnection

      protected JarURLConnection(URL url) throws MalformedURLException
      指定したURLに新しいJarURLConnectionを作成します。
      パラメータ:
      url - URL
      例外:
      MalformedURLException−指定文字列に有効なプロトコルが見つからない場合、または文字列を解析できない場合。
  • メソッドの詳細

    • getJarFileURL

      public URL getJarFileURL()
      この接続で使うJARファイルのURLを返します。
      戻り値:
      この接続で使うJARファイルのURL。
    • getEntryName

      public String getEntryName()
      この接続のエントリ名を返します。 この接続に対応するJARファイルURLが、JARファイル・エントリではなくJARファイルを指している場合、このメソッドはnullを返します。
      戻り値:
      この接続で使うエントリ名(エントリがある場合)。
    • getJarFile

      public abstract JarFile getJarFile() throws IOException
      この接続のJARファイルを返します。
      戻り値:
      この接続のJARファイル。 この接続がJARファイルのエントリへの接続である場合には、JARファイル・オブジェクトが返される
      例外:
      IOException−この接続のJARファイルへの接続試行中にIOExceptionが発生した場合。
      関連項目:
      URLConnection.connect()
    • getManifest

      public Manifest getManifest() throws IOException
      この接続のManifestが存在する場合はそれを、存在しない場合はnullを、それぞれ返します。
      戻り値:
      この接続のJARファイル・オブジェクトに対応するマニフェスト・オブジェクト。
      例外:
      IOException - この接続のJARファイルの取得時にIOExceptionがスローされた場合。
      関連項目:
      getJarFile()
    • getJarEntry

      public JarEntry getJarEntry() throws IOException
      この接続のJARエントリ・オブジェクトが存在する場合にそれを返します。 この接続に対応するJARファイルURLが、JARファイル・エントリではなくJARファイルを指している場合、このメソッドはnullを返します。
      戻り値:
      この接続のJARエントリ・オブジェクト。この接続のJAR URLがJARファイルを指している場合はnull。
      例外:
      IOException - この接続のJARファイルの取得時にIOExceptionがスローされた場合。
      関連項目:
      getJarFile(), getJarEntry()
    • getAttributes

      public Attributes getAttributes() throws IOException
      接続で使うURLがJARファイル・エントリを指す場合、この接続用のAttributesオブジェクトを返します。そうでない場合はnullを返します。
      戻り値:
      この接続のURLがJARファイル・エントリを指している場合はこの接続のAttributesオブジェクト、そうでない場合はnull。
      例外:
      IOException - JARエントリの取得時にIOExceptionがスローされた場合。
      関連項目:
      getJarEntry()
    • getMainAttributes

      public Attributes getMainAttributes() throws IOException
      この接続で使うJARファイルの主要なAttributesを返します。
      戻り値:
      この接続で使うJARファイルの主要なAttributes。
      例外:
      IOException−マニフェストの取得時にIOExceptionがスローされた場合。
      関連項目:
      getJarFile(), getManifest()
    • getCertificates

      public Certificate[] getCertificates() throws IOException
      この接続のURLがJARファイル・エントリを指す場合は証明書オブジェクトを返し、それ以外の場合はnullを返します。 このメソッドは、入力ストリームを最後まで読みとって、接続が完全に検証されないかぎり呼び出せません。 そうでない場合は、このメソッドはnullを返します
      戻り値:
      接続で使うURLがJARファイル・エントリを指す場合、この接続用のCertificateオブジェクト、そうでない場合はnull。
      例外:
      IOException - JARエントリの取得時にIOExceptionがスローされた場合。
      関連項目:
      getJarEntry()