【Java】Jarファイルの内容を変更する方法の紹介

今回は、Jarコマンドを使用してJAR(Java Archive)形式のファイルの内容を変更する方法を紹介していきます。

JAR形式のファイルは、ZIP形式など圧縮されたファイル形式になります。解凍/圧縮ツールなどを使用して、解凍してJAR形式ファイルの内容を確認することもできます。

スポンサーリンク

検証環境

検証に使用した環境/ライブラリを次に記載します。

  • Jar
    • バージョン:11.0.9

Jarコマンドの使用方法の例を紹介するための、検証用ディレクトリ構成を次に記載します。

example.jar
├─com
│    └─fumidzuki
│        ExampleMain1.class
│        ExampleMain2.class
│
└─META-INF
    MANIFEST.MF

JARファイルから取得

JARファイルから特定のファイルを取得するためには、次のJarコマンドを実行します。

jar -xfv JARファイル名 ファイル名、または、ディレクトリ名

指定しているオプションは、次の処理を意味します。

  • -x
    • 指定したファイル、または、ディレクトリをJARファイルから取得します。指定しない場合は、すべてを取得します。
  • -f
    • JARファイル名を指定するために使用します。
  • -v
    • 標準出力に詳細情報を表示します。

Jarコマンドでファイル名を指定した、ファイル取得の実行例は、次のようになります。

jar -xfv example.jar com\fumidzuki\ExampleMain1.class
> com/fumidzuki/ExampleMain1.classが展開されました

Jarコマンドでディレクトリ名を指定した、ファイル取得の実行例は、次のようになります。

jar -xfv example.jar com\fumidzuki\
> com/fumidzuki/ExampleMain1.classが展開されました
> com/fumidzuki/ExampleMain2.classが展開されました

JARファイルの更新

JARファイルの内容を更新するためには、次のJarコマンドを実行します。

jar -ufv JARファイル名 ファイル名、または、ディレクトリ名

指定しているオプションは、次の処理を意味します。

  • -u
    • 指定したファイル、または、ディレクトリを使用してJARファイルを更新します。
  • -f
    • JARファイル名を指定するために使用します。
  • -v
    • 標準出力に詳細情報を表示します。

Jarコマンドでファイルを名を指定した、ファイル更新の実行例は、次のようになります。

jar -ufv example.jar com\fumidzuki\ExampleMain1.class
> com/fumidzuki/ExampleMain1.classを追加中です(入=562)(出=345)(38%収縮されました)

Jarコマンドでディレクトリ名を指定した、ファイル更新の実行例は、次のようになります。

jar -ufv example.jar com\fumidzuki\
> com/fumidzuki/ExampleMain1.classを追加中です(入=562)(出=345)(38%収縮されました)
> com/fumidzuki/ExampleMain2.classを追加中です(入=562)(出=346)(38%収縮されました)
> com/fumidzuki/を追加中です(入=0)(出=0)(0%格納されました)

まとめ

Jarコマンドを使用して、JAR形式ファイルの内容の取得と更新する方法を紹介しました。

参考情報

Jarコマンドについては、次の公式サイトで詳細を確認することができます。

公式サイト:https://docs.oracle.com/javase/jp/11/tools/jar.html