- java.lang.Object
-
- java.util.zip.ZipFile
-
- java.util.jar.JarFile
-
- すべての実装されたインタフェース:
Closeable,AutoCloseable
public class JarFile extends ZipFile
JarFileクラスは、java.io.RandomAccessFileで開くことができる任意のファイルからjarファイルの内容を読み取るために使います。java.util.zip.ZipFileクラスを拡張し、オプションのManifestエントリの読み取りをサポートし、マルチ・リリースjarファイルの処理をサポートします。Manifestエントリは、jarファイルとそのエントリのメタ情報を指定するために使います。「マルチ・リリースjarファイル」は、"Multi-Release"という名前のメイン属性を持つマニフェストを含むjarファイルです。"base"エントリのセットは、jarファイルのパブリック・インタフェースを構成するpublicまたはprotectedメソッドを含むパブリック・クラスであり、"versioned"エントリのセットが含まれています"META-INF/versions"ディレクトリのサブディレクトリにあります。 バージョン管理されたエントリは、Javaプラットフォームのメジャー・バージョンによってパーティション化されます。 バージョン
n、8 < nを"META-INF/versions/{n}"ディレクトリに持つバージョニング済みエントリは、ベース・エントリおよびバージョン番号i(8 < i < n)を持つエントリをオーバーライドします。デフォルトでは、マルチ・リリースjarファイルの
JarFileは、マルチ・リリースjarファイルを単純な(unversioned) jarファイルであるかのように処理するように構成されているため、エントリ名は最大でも1つのベース・エントリに関連付けられています。JarFileは、JarFileをJarFile(File, boolean, int, Runtime.Version)コンストラクタとともに作成することによって、マルチ・リリースjarファイルを処理するように構成できます。Runtime.Versionオブジェクトは、バージョニングされたエントリを検索するときに使用される最大バージョンを設定します。 このように構成すると、エントリ名は最大でも1つの基本エントリと0個以上のバージョン管理されたエントリに対応できます。 エントリ名を、バージョンが最大バージョン(getEntry(String)を参照してください)以下の最新のバージョン管理されたエントリに関連付ける検索が必要です。JarFileを利用してJarFileエントリの内容からクラスをロードするクラス・ローダーは、最後の引数に割り当てられた値Runtime.version()を使用してJarFile(File, boolean, int, Runtime.Version)コンストラクタを呼び出すことによって、JarFileを構築する必要があります。 これにより、実行中のJVMのメジャー・バージョンと互換性のあるクラスがマルチ・リリースJARファイルからロードされるようになります。シグネチャ付きjarファイル・ファイルを開くときに
verifyフラグがオンになっている場合、そのjarエントリの内容は、path nameに関連付けられているマニフェスト内に埋め込まれたシグネチャに対して検証されます。 複数文字のjarファイルの場合、バージョニングされたエントリの内容はそのシグネチャに対してverfieidとなり、JarEntry.getCodeSigners()は独自のシグネチャ者を戻します。 検証プロセスには、署名者の証明書の検証は含まれていないことに注意してください。 呼出し側で、JarEntry.getCodeSigners()の戻り値を検査し、署名が信頼できるかどうかをさらに判断してください。ほかで指定がない場合、
null引数をコンストラクタまたはこのクラスのメソッドへ渡すと、NullPointerExceptionがスローされます。- 実装上の注意:
- APIを使用して
JarFile(例えば、コンパイルされたアプリケーションやライブラリの構成を上書きします)を構成できない場合は、2つのSystemプロパティを使用できます。-
jdk.util.jar.versionには、負でない整数<= Runtime.version().feature()のString表現である値を割り当てることができます。 この値は、実効ランタイム・バージョンをRuntime.version().feature()を評価することによって得られたデフォルト値以外の値に設定するために使用されます。 実効ランタイム・バージョンは、最後の引数の値がJarFile.runtimeVersion()のときにJarFile(File, boolean, int, Runtime.Version)コンストラクタが使用するバージョンです。 -
jdk.util.jar.enableMultiReleaseには、3つのString値true、false、またはforceのいずれかを割り当てることができます。 値true(デフォルト値)は、マルチ・リリースjarファイル処理を有効にします。 値falseは、"Multi-Release"マニフェスト属性を無視して、マルチ・リリースjar処理を無効にします。存在する場合は、マルチ・リリースjarファイルのバージョン管理されたディレクトリを無視します。 さらに、メソッドisMultiRelease()はfalseを返します。 値forceにより、JarFileは構築後にランタイム・バージョン管理に初期化されます。 これはこのコードと事実上同じです:(new JarFile(File, boolean, int, JarFile.runtimeVersion())。
-
- 導入されたバージョン:
- 1.2
- 関連項目:
Manifest,ZipFile,JarEntry
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static intCENATTstatic intCENATXstatic intCENCOMstatic intCENCRCstatic intCENDSKstatic intCENEXTstatic intCENFLGstatic intCENHDRstatic intCENHOWstatic intCENLENstatic intCENNAMstatic intCENOFFstatic longCENSIGstatic intCENSIZstatic intCENTIMstatic intCENVEMstatic intCENVERstatic intENDCOMstatic intENDHDRstatic intENDOFFstatic longENDSIGstatic intENDSIZstatic intENDSUBstatic intENDTOTstatic intEXTCRCstatic intEXTHDRstatic intEXTLENstatic longEXTSIGstatic intEXTSIZstatic intLOCCRCstatic intLOCEXTstatic intLOCFLGstatic intLOCHDRstatic intLOCHOWstatic intLOCLENstatic intLOCNAMstatic longLOCSIGstatic intLOCSIZstatic intLOCTIMstatic intLOCVERstatic StringMANIFEST_NAMEJARマニフェスト・ファイルの名前です。-
クラス java.util.zip.ZipFileで宣言されたフィールド
OPEN_DELETE, OPEN_READ
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 JarFile(File file)指定されたFileオブジェクトから読み込む新しいJarFileを作成します。JarFile(File file, boolean verify)指定されたFileオブジェクトから読み込む新しいJarFileを作成します。JarFile(File file, boolean verify, int mode)指定されたモードで指定のFileオブジェクトから読み込む新しいJarFileを作成します。JarFile(File file, boolean verify, int mode, Runtime.Version version)指定されたモードで指定のFileオブジェクトから読み込む新しいJarFileを作成します。JarFile(String name)指定されたファイルnameから読み込む新しいJarFileを作成します。JarFile(String name, boolean verify)指定されたファイルnameから読み込む新しいJarFileを作成します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 static Runtime.VersionbaseVersion()マルチ・リリースjarファイルのバージョン管理されていない構成を表すバージョンを返します。Enumeration<JarEntry>entries()jarファイル・エントリの列挙型を返します。ZipEntrygetEntry(String name)指定された基本エントリ名のZipEntryを返します。見つからなければnullを返します。InputStreamgetInputStream(ZipEntry ze)指定されたZIPファイル・エントリの内容を読み込む入力ストリームを返します。JarEntrygetJarEntry(String name)指定された基本エントリ名のJarEntryを返します。見つからなければnullを返します。ManifestgetManifest()jarファイルのマニフェストを返します。マニフェストがない場合はnullを返します。Runtime.VersiongetVersion()バージョン管理されたエントリを検索するときに使用される最大バージョンを返します。booleanisMultiRelease()このjarファイルがマルチ・リリースjarファイルであるかどうかを示します。static Runtime.VersionruntimeVersion()マルチ・リリースjarファイルの有効なランタイム・バージョン構成を表すバージョンを返します。Stream<JarEntry>stream()jarファイル・エントリ上に順序付けされたStreamを返します。Stream<JarEntry>versionedStream()バージョン管理されたjarファイル・エントリのStreamを返します。-
クラス java.util.zip.ZipFileで宣言されたメソッド
close, getComment, getName, size
-
-
-
-
フィールドの詳細
-
LOCSIG
public static final long LOCSIG
- 関連項目:
- 定数フィールド値
-
EXTSIG
public static final long EXTSIG
- 関連項目:
- 定数フィールド値
-
CENSIG
public static final long CENSIG
- 関連項目:
- 定数フィールド値
-
ENDSIG
public static final long ENDSIG
- 関連項目:
- 定数フィールド値
-
LOCHDR
public static final int LOCHDR
- 関連項目:
- 定数フィールド値
-
EXTHDR
public static final int EXTHDR
- 関連項目:
- 定数フィールド値
-
CENHDR
public static final int CENHDR
- 関連項目:
- 定数フィールド値
-
ENDHDR
public static final int ENDHDR
- 関連項目:
- 定数フィールド値
-
LOCVER
public static final int LOCVER
- 関連項目:
- 定数フィールド値
-
LOCFLG
public static final int LOCFLG
- 関連項目:
- 定数フィールド値
-
LOCHOW
public static final int LOCHOW
- 関連項目:
- 定数フィールド値
-
LOCTIM
public static final int LOCTIM
- 関連項目:
- 定数フィールド値
-
LOCCRC
public static final int LOCCRC
- 関連項目:
- 定数フィールド値
-
LOCSIZ
public static final int LOCSIZ
- 関連項目:
- 定数フィールド値
-
LOCLEN
public static final int LOCLEN
- 関連項目:
- 定数フィールド値
-
LOCNAM
public static final int LOCNAM
- 関連項目:
- 定数フィールド値
-
LOCEXT
public static final int LOCEXT
- 関連項目:
- 定数フィールド値
-
EXTCRC
public static final int EXTCRC
- 関連項目:
- 定数フィールド値
-
EXTSIZ
public static final int EXTSIZ
- 関連項目:
- 定数フィールド値
-
EXTLEN
public static final int EXTLEN
- 関連項目:
- 定数フィールド値
-
CENVEM
public static final int CENVEM
- 関連項目:
- 定数フィールド値
-
CENVER
public static final int CENVER
- 関連項目:
- 定数フィールド値
-
CENFLG
public static final int CENFLG
- 関連項目:
- 定数フィールド値
-
CENHOW
public static final int CENHOW
- 関連項目:
- 定数フィールド値
-
CENTIM
public static final int CENTIM
- 関連項目:
- 定数フィールド値
-
CENCRC
public static final int CENCRC
- 関連項目:
- 定数フィールド値
-
CENSIZ
public static final int CENSIZ
- 関連項目:
- 定数フィールド値
-
CENLEN
public static final int CENLEN
- 関連項目:
- 定数フィールド値
-
CENNAM
public static final int CENNAM
- 関連項目:
- 定数フィールド値
-
CENEXT
public static final int CENEXT
- 関連項目:
- 定数フィールド値
-
CENCOM
public static final int CENCOM
- 関連項目:
- 定数フィールド値
-
CENDSK
public static final int CENDSK
- 関連項目:
- 定数フィールド値
-
CENATT
public static final int CENATT
- 関連項目:
- 定数フィールド値
-
CENATX
public static final int CENATX
- 関連項目:
- 定数フィールド値
-
CENOFF
public static final int CENOFF
- 関連項目:
- 定数フィールド値
-
ENDSUB
public static final int ENDSUB
- 関連項目:
- 定数フィールド値
-
ENDTOT
public static final int ENDTOT
- 関連項目:
- 定数フィールド値
-
ENDSIZ
public static final int ENDSIZ
- 関連項目:
- 定数フィールド値
-
ENDOFF
public static final int ENDOFF
- 関連項目:
- 定数フィールド値
-
ENDCOM
public static final int ENDCOM
- 関連項目:
- 定数フィールド値
-
-
コンストラクタの詳細
-
JarFile
public JarFile(String name) throws IOException
指定されたファイルnameから読み込む新しいJarFileを作成します。JarFileが署名されているかどうかが確認されます。- パラメータ:
name- 読込みのために開くjarファイルの名前- 例外:
IOException- 入出力エラーが発生した場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合
-
JarFile
public JarFile(String name, boolean verify) throws IOException
指定されたファイルnameから読み込む新しいJarFileを作成します。- パラメータ:
name- 読込みのために開くjarファイルの名前verify- jarファイルが署名されていることを確認するかどうか。- 例外:
IOException- 入出力エラーが発生した場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合
-
JarFile
public JarFile(File file) throws IOException
指定されたFileオブジェクトから読み込む新しいJarFileを作成します。JarFileが署名されているかどうかが確認されます。- パラメータ:
file- 読込みのために開かれるjarファイル- 例外:
IOException- 入出力エラーが発生した場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合
-
JarFile
public JarFile(File file, boolean verify) throws IOException
指定されたFileオブジェクトから読み込む新しいJarFileを作成します。- パラメータ:
file- 読込みのために開かれるjarファイルverify- jarファイルが署名されていることを確認するかどうか。- 例外:
IOException- 入出力エラーが発生した場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合。
-
JarFile
public JarFile(File file, boolean verify, int mode) throws IOException
指定されたモードで指定のFileオブジェクトから読み込む新しいJarFileを作成します。 モード引数は、OPEN_READまたはOPEN_READ|OPEN_DELETEである必要があります。- パラメータ:
file- 読込みのために開かれるjarファイルverify- jarファイルが署名されていることを確認するかどうか。mode- ファイルが開かれるモード- 例外:
IOException- 入出力エラーが発生した場合IllegalArgumentException-mode引数が無効な場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合- 導入されたバージョン:
- 1.3
-
JarFile
public JarFile(File file, boolean verify, int mode, Runtime.Version version) throws IOException
指定されたモードで指定のFileオブジェクトから読み込む新しいJarFileを作成します。 モード引数は、OPEN_READまたはOPEN_READ|OPEN_DELETEである必要があります。 正規表現に変換された後のversion引数は、マルチ・リリースjarファイルを処理するためのJarFileの構成に使用されます。バージョン・パラメータから得られる標準形式は、
Runtime.Version.parse(Integer.toString(n))であり、ここで、nはMath.max(version.feature(), JarFile.baseVersion().feature())です。- パラメータ:
file- 読込みのために開かれるjarファイルverify- jarファイルが署名されていることを確認するかどうか。mode- ファイルが開かれるモードversion- マルチ・リリースjarファイルのリリース・バージョンを指定- 例外:
IOException- 入出力エラーが発生した場合IllegalArgumentException-mode引数が無効な場合SecurityException- ファイルへのアクセスがSecurityManagerによって拒否された場合NullPointerException-versionがnullの場合- 導入されたバージョン:
- 9
-
-
メソッドの詳細
-
baseVersion
public static Runtime.Version baseVersion()
マルチ・リリースjarファイルのバージョン管理されていない構成を表すバージョンを返します。- 戻り値:
- バージョン管理されていない構成を表すバージョン
- 導入されたバージョン:
- 9
-
runtimeVersion
public static Runtime.Version runtimeVersion()
マルチ・リリースjarファイルの有効なランタイム・バージョン構成を表すバージョンを返します。デフォルトでは、返される
Versionの機能バージョン番号は、Runtime.version()の機能バージョン番号と等しくなります。 ただし、jdk.util.jar.versionプロパティが設定されている場合、返されるVersionはそのプロパティから派生し、機能のバージョン番号は等しくない場合があります。- 戻り値:
- ランタイム・バージョン管理された構成を表すバージョン
- 導入されたバージョン:
- 9
-
getVersion
public final Runtime.Version getVersion()
バージョン管理されたエントリを検索するときに使用される最大バージョンを返します。この
JarFileがマルチ・リリースjarファイルではない、またはそのように処理されるように構成されていない場合、返されるバージョンはbaseVersion()から返されるバージョンと同じになります。- 戻り値:
- 最大バージョン
- 導入されたバージョン:
- 9
-
isMultiRelease
public final boolean isMultiRelease()
このjarファイルがマルチ・リリースjarファイルであるかどうかを示します。- 戻り値:
- このJarFileが複数リリースのjarファイルの場合はtrue
- 導入されたバージョン:
- 9
-
getManifest
public Manifest getManifest() throws IOException
jarファイルのマニフェストを返します。マニフェストがない場合はnullを返します。- 戻り値:
- jarファイルのマニフェスト。マニフェストがない場合は
null - 例外:
IllegalStateException- jarファイルが閉じられている場合に、スローされることがあるIOException- 入出力エラーが発生した場合
-
getJarEntry
public JarEntry getJarEntry(String name)
指定された基本エントリ名のJarEntryを返します。見つからなければnullを返します。この
JarFileがマルチ・リリースjarファイルであり、そのように処理されるように構成されている場合、指定されたエントリ名に関連付けられた最新のバージョン化されたエントリであるJarEntryを検索して返します。 返されるJarEntryは、エントリが存在するnの最大値に対して、文字列"META-INF/versions/{n}/"でプレフィクス付けられた特定の基本エントリ名に対応するバージョン付きエントリです。 そのようなバージョン管理されたエントリが存在しない場合、基本エントリのJarEntryが返されます。そうでない場合は、エントリが見つからない場合はnullが返されます。 バージョンnの初期値は、メソッドgetVersion()によって返される最大バージョンです。- 実装要件:
- この実装は
getEntry(String)を呼び出します。 - パラメータ:
name- jarファイルのエントリ名- 戻り値:
- 指定されたエントリ名の
JarEntry、またはバージョン管理されたエントリ名、見つからなければnull - 例外:
IllegalStateException- jarファイルが閉じられている場合に、スローされることがある- 関連項目:
JarEntry
-
getEntry
public ZipEntry getEntry(String name)
指定された基本エントリ名のZipEntryを返します。見つからなければnullを返します。この
JarFileがマルチ・リリースjarファイルであり、そのように処理されるように構成されている場合、指定されたエントリ名に関連付けられた最新のバージョン化されたエントリであるZipEntryを検索して返します。 返されるZipEntryは、エントリが存在するnの最大値に対して、文字列"META-INF/versions/{n}/"でプレフィクス付けられた特定の基本エントリ名に対応するバージョン付きエントリです。 そのようなバージョン管理されたエントリが存在しない場合、基本エントリのZipEntryが返されます。そうでない場合は、エントリが見つからない場合はnullが返されます。 バージョンnの初期値は、メソッドgetVersion()によって返される最大バージョンです。- オーバーライド:
getEntry、クラス:ZipFile- 実装要件:
- この実装は、対応する基本エントリがない場合でも、リクエストされた名前のバージョン付きエントリを返す可能性があります。 これは、一致するプライベートまたはパッケージ・プライベートのバージョニングされたエントリがある場合に発生します。 サブクラスがこのメソッドをオーバーライドする場合は、オーバーライド・メソッドが
super.getEntry(name)を呼び出してバージョン化されたすべてのエントリを取得するようにします。 - パラメータ:
name- jarファイルのエントリ名- 戻り値:
- 指定されたエントリ名またはバージョン化されたエントリ名の
ZipEntry、または見つからなければnull - 例外:
IllegalStateException- jarファイルが閉じられている場合に、スローされることがある- 関連項目:
ZipEntry
-
entries
public Enumeration<JarEntry> entries()
jarファイル・エントリの列挙型を返します。- オーバーライド:
entries、クラス:ZipFile- 戻り値:
- jarファイル・エントリの列挙型
- 例外:
IllegalStateException- jarファイルが閉じられている場合に、スローされることがある
-
stream
public Stream<JarEntry> stream()
jarファイル・エントリ上に順序付けされたStreamを返します。 エントリは、Streamに、jarファイルの中央ディレクトリに表示される順序で表示されます。- オーバーライド:
- クラス
ZipFileのstream - 戻り値:
- このjarファイル内のエントリの順序付けられた
Stream - 例外:
IllegalStateException- jarファイルが閉じられている場合- 導入されたバージョン:
- 1.8
-
versionedStream
public Stream<JarEntry> versionedStream()
バージョン管理されたjarファイル・エントリのStreamを返します。この
JarFileがマルチ・リリースjarファイルであり、そのように処理されるように構成されている場合、ストリーム内のエントリは、対応するベース・エントリ名に関連付けられた最新バージョン・エントリです。 バージョン管理された最新のエントリの最大バージョンは、getVersion()によって返されたバージョンです。 返されるストリームには、バージョニングされたエントリとしてのみ存在するエントリが含まれる場合があります。 jarファイルがマルチ・リリースjarファイルでない場合、またはJarFileがマルチ・リリースjarファイルの処理用に構成されていない場合、このメソッドはstream()が返すストリームと同じストリームを返します。- 戻り値:
- バージョン管理されたエントリのストリーム
- 導入されたバージョン:
- 10
-
getInputStream
public InputStream getInputStream(ZipEntry ze) throws IOException
指定されたZIPファイル・エントリの内容を読み込む入力ストリームを返します。- オーバーライド:
getInputStream、クラス:ZipFile- パラメータ:
ze- ZIPファイル・エントリ- 戻り値:
- 指定されたzipファイル・エントリの内容を読み取るための、入力ストリーム
- 例外:
ZipException- zipファイル形式エラーが発生した場合IOException- 入出力エラーが発生した場合SecurityException- jarファイル・エントリが誤って署名された場合。IllegalStateException- jarファイルが閉じられている場合に、スローされることがある
-
-