「jarファイルの中身を確認したい」「jarファイルを解凍してclassファイルを取り出したい」という場面はJava開発においてよく登場します。
jarファイルはZIP形式をベースとしているため、一般的な解凍ソフトを使っても展開できますが、Javaに付属するjarコマンドを使う方法も覚えておくと便利です。
この記事では、jarファイルの解凍方法と中身の確認手順について、内部構造の理解も含めてわかりやすく解説しています。
classファイルやMETA-INFの内容を確認したい方、実際にファイルを展開したい方はぜひ参考にしてください。
jarファイルを解凍できる理由とZIP形式の関係
それではまず、jarファイルを解凍できる理由とZIP形式の関係について解説していきます。
jarファイルはその内部構造がZIP形式であるため、通常の解凍ソフトでそのまま展開できます。
これはJavaの設計上の特徴であり、ZIP形式の広い普及とツールとの互換性を活かした仕組みです。
jarファイルはZIPファイルそのものです。拡張子を.jarから.zipに変更するだけで、7-ZipやWinRARなどの標準的な解凍ソフトで開くことができます。ただし、拡張子を変更しなくてもjarファイルとして直接解凍ソフトに渡すことも可能です。
jarファイルの内部構造を理解しよう
jarファイルを解凍すると、以下のようなファイルやディレクトリが現れます。
| 内部要素 | 内容 |
|---|---|
| META-INF/MANIFEST.MF | メインクラスやクラスパスなどのメタ情報 |
| .classファイル群 | コンパイル済みのJavaバイトコード |
| パッケージディレクトリ | com/, org/, net/などJavaパッケージに対応したフォルダ構造 |
| リソースファイル | 画像・設定ファイル・プロパティファイルなど |
| ネストされたjarファイル | Fat JARの場合、依存ライブラリがjar内に格納されていることも |
META-INFディレクトリの役割
META-INFはjarファイルのメタ情報を格納するための専用ディレクトリです。
MANIFEST.MFファイルは必須要素であり、jarの動作を制御する重要な設定ファイルとして機能しています。
セキュリティ署名情報(.SF・.RSAファイル)や、サービスプロバイダ設定(META-INF/services/)なども、このディレクトリ内に格納されます。
解凍後にMANIFEST.MFをテキストエディタで開くと、アプリケーションの構成や依存関係の情報を確認できます。
classファイルの内容について
jarファイルの中核をなすのが.classファイルです。
classファイルはJavaソースコード(.javaファイル)をコンパイルした結果として生成されるバイトコード形式のファイルであり、テキストエディタで開いても人間が読める形式ではありません。
逆コンパイラ(javapコマンドやIntelliJ IDEAの組み込みデコンパイラなど)を使うことで、ある程度ソースコードに近い形で内容を読むことができます。
7-ZipやWinRARを使ったjarファイルの解凍手順
続いては、7-ZipやWinRARを使ったjarファイルの解凍手順を確認していきます。
最も手軽な方法は、すでにインストールされている解凍ソフトをそのまま使うことです。
7-Zipを使った解凍方法
7-Zipがインストールされている場合、jarファイルを右クリックして「7-Zip」→「ここに展開」または「展開先を指定して展開」を選択するだけで解凍できます。
「ここに展開」を選ぶと、jarファイルと同じディレクトリに展開されます。
多くのファイルが展開される場合に備えて「展開先を指定して展開」から新しいフォルダを指定するほうが整理しやすいでしょう。
WinRARを使った解凍方法
WinRARでも同様に、jarファイルを右クリックして「ここに展開」などのオプションを選択するだけで展開できます。
WinRARはjarファイルをそのままZIPファイルとして認識し、内部のすべてのファイルを展開できます。
Windowsに標準搭載されているZIP機能(エクスプローラーの「すべて展開」)でも、拡張子を.zipにリネームするか、そのままjarファイルとして試すことで解凍できる場合があります。
拡張子を変更して解凍する方法
解凍ソフトがjarファイルを認識しない場合は、拡張子を「.zip」に変更してから解凍を試みます。
ファイルを右クリック→「名前の変更」で拡張子を「.jar」から「.zip」に変更し、その後通常のZIPファイルと同じ手順で解凍します。
解凍後は必要に応じて元のファイル名に戻しておきましょう。
jarコマンドを使った解凍と内容確認の手順
続いては、jarコマンドを使った解凍と内容確認の手順を確認していきます。
JDKがインストールされている環境では、「jar」コマンドを使ってjarファイルを操作するのが最も確実な方法です。
jar tfコマンドで内容を確認する
まず解凍する前に、jarファイルの中身を一覧表示して確認することができます。
内容確認コマンド:
jar tf myapp.jar
詳細情報付きで確認:
jar tvf myapp.jar
(vオプションを追加するとファイルサイズや更新日時も表示される)
このコマンドを実行することで、jarファイルを実際に展開せずに内部のファイル構成を確認できるため、特定のファイルが含まれているかどうかを素早く確認できます。
jar xfコマンドで展開する
jarファイルを実際に展開するには「jar xf ファイル名.jar」コマンドを使用します。
すべて展開するコマンド:
jar xf myapp.jar
特定のファイルだけを展開するコマンド:
jar xf myapp.jar META-INF/MANIFEST.MF
(展開先はコマンドを実行したカレントディレクトリになる)
展開したいディレクトリに移動してからコマンドを実行することで、整理された状態でファイルを取り出せます。
MANIFEST.MFの内容を確認してアプリを分析する
jarファイルを展開した後、META-INF/MANIFEST.MFをテキストエディタで開くと、アプリケーションの重要情報を確認できます。
MANIFEST.MFの例:
Manifest-Version: 1.0
Main-Class: com.example.app.Application
Class-Path: lib/spring-core.jar lib/log4j.jar
Implementation-Version: 2.1.0
Built-By: developer
メインクラスの確認、依存ライブラリの確認、バージョン情報の取得など、さまざまな情報をここから読み取ることができます。
まとめ
この記事では、jarファイルの解凍方法と中身の確認手順について詳しく解説しました。
jarファイルはZIP形式のため、7-Zipなどの解凍ソフトやjarコマンドで簡単に展開・確認できます。
内部のclassファイルやMANIFEST.MFを確認することで、アプリケーションの構成や設定を深く理解できるでしょう。
開発や調査の場面でjarファイルの中身を確認する必要が生じた際には、今回紹介した手順をぜひ活用してみてください。