【Java入門】jarファイルの作成、解凍、実行について解説

こんにちは!フリーランスの長野です。

Javaのjarファイルって使ってますか?jarファイルは他のプログラムで使うライブラリやJavaアプリの実行ファイルとして使えるので、流用ができて便利です。

この記事では、Javaのjarについて

jarとは?
jarコマンドの使い方を知りたい

という基本的な疑問から

  • jarファイルの作成
  • jarファイルの実行
  • jarファイルの解凍
  • jarファイルの閲覧
  • classpathを指定して実行

など実用的な内容についても解説していきます。今回はjarについて、わかりやすく解説します!

なお、Javaの記事については、こちらにまとめています。

目次

jarとは

jarとは、コンパイルされた複数のclassファイルおよびそれが使用する画像などのリソースを一つにまとめZIP形式で圧縮されたファイル、もしくはそれを出力するツールのことを言います。Java Archiveの略です。

圧縮することでJavaのライブラリやアプリケーションの配布、利用が簡単になります。jarはコマンドでよく使用されます。

jarコマンドの使い方

jarコマンドはコマンドプロンプトなどで使用します。jarコマンドは下記のようなオプションを指定して使います。

オプション説明
-c圧縮ファイルの新規作成
-t内容の一覧を表示
-x圧縮ファイルの展開
-ujarファイルの更新
-vコマンドラインに処理内容を表示
-fjarファイル名の指定
-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アプリとして配布、使用することができて便利です。

使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次