こんにちは!フリーランスの長野です。
Javaのjarファイルって使ってますか?jarファイルは他のプログラムで使うライブラリやJavaアプリの実行ファイルとして使えるので、流用ができて便利です。
この記事では、Javaのjarについて
jarコマンドの使い方を知りたい
という基本的な疑問から
- jarファイルの作成
- jarファイルの実行
- jarファイルの解凍
- jarファイルの閲覧
- classpathを指定して実行
など実用的な内容についても解説していきます。今回はjarについて、わかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
jarとは
jarとは、コンパイルされた複数のclassファイルおよびそれが使用する画像などのリソースを一つにまとめZIP形式で圧縮されたファイル、もしくはそれを出力するツールのことを言います。Java Archiveの略です。
圧縮することでJavaのライブラリやアプリケーションの配布、利用が簡単になります。jarはコマンドでよく使用されます。
jarコマンドの使い方
jarコマンドはコマンドプロンプトなどで使用します。jarコマンドは下記のようなオプションを指定して使います。
オプション | 説明 |
---|---|
-c | 圧縮ファイルの新規作成 |
-t | 内容の一覧を表示 |
-x | 圧縮ファイルの展開 |
-u | jarファイルの更新 |
-v | コマンドラインに処理内容を表示 |
-f | jarファイル名の指定 |
-m | マニフェストファイルを指定 |
-i | インデックス情報を作成 |
-o | 圧縮を行わない |
-M | マニフェストファイルを作成しない |
-C | 指定したファイルの取り込み |
jarファイルの作成
それでは実際にjarファイルを作成してみましょう。jarファイルを作成する前にJavaファイルをコンパイルしてclassファイルを作成します。
Sample.java:
class Sample { public static void main(String[] args) { Sample2 sample = new Sample2(); } } class Sample2 { public Sample2() { System.out.println("Hello Java!"); } }
javacコマンドでclassファイルを作成した後に、jarコマンドでSample.classファイルとSample2.classファイルをSample.jarファイル1つにまとめています。
javacコマンドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
jarファイルの実行
jarファイルを実行するにはマニフェストファイルが必要です。マニフェストファイルにはmainメソッドを含むクラス名を指定します。例えば以下のとおりです。
manifest.mf:
Main-Class: Sample
マニフェストファイルの拡張子は「.mf」にする必要があります。「Main-Class:」のあとにmainメソッドを含むクラス名を指定します。そして、行の最後は必ず改行する必要があります。
マニフェストファイルを指定してjarファイルを作成する例です。
jar -cvfm Sample.jar manifest.mf *.class
これを実行するコマンドは以下のとおりです。
java -jar Sample.jar
jarファイルの解凍
圧縮したjarファイルを解凍するには次のようにコマンドを入力実行します。
jar -xvf Sample.jar
jarファイルの閲覧
圧縮したjarファイルの内容を閲覧するには次のようにコマンドを入力実行します。
jar -tf Sample.jar
classpathを指定して実行
jarファイルにclasspathを指定して実行する方法についてご紹介します。
ここまでのサンプルコードで例えばHelloフォルダ内のクラスファイルをjarファイルにまとめて、そのjarファイルとMain.javaクラスを使って処理するということをやってみましょう。
Helloフォルダのファイルを2つに増やします。
Hello/Hello1.java:
public class Hello1 { public Hello1() { System.out.println("Hello World!"); } }
Hello/Hello2.java:
public class Hello2 { public Hello2() { System.out.println("Hello Java!"); } }
この2つのファイルをMain.javaファイルから使用します。
Main.java:
public class Main { public static void main(String[] args) { Hello1 hello1 = new Hello1(); Hello2 hello2 = new Hello2(); } }
コンパイルしたら、HelloフォルダでHello1.classとHello2.classファイルをHello.jarファイルに圧縮します。
Hello.jarファイルとMain.javaファイルを使ってコンパイルをします。Hello.jarファイルを指定するのに-classpathオプションを使います。ただし注意すべき点が1点あります。
実行する際にはjarファイルの指定後に「;」(セミコロン)が必要です。
classpathの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
まとめ
今回はJavaのjarについて解説してきましたが、いかがでしたか?Javaではプログラミングをする際にたくさんのクラスが必要となります。一つのjarファイルにまとめて圧縮しておくと、ライブラリやJavaアプリとして配布、使用することができて便利です。
使いこなすことができるように、この記事を何度も参考にして下さいね!