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

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

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

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

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

という基本的な疑問から

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

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

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コマンドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】コンパイルする方法とエラー発生時の対処法について解説
更新日 : 2019年5月10日

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入門】classpathを指定して実行する方法(確認の方法も解説)
更新日 : 2019年4月8日

まとめ

今回はJavaのjarについて解説してきましたが、いかがでしたか?Javaではプログラミングをする際にたくさんのクラスが必要となります。一つのjarファイルにまとめて圧縮しておくと、ライブラリやJavaアプリとして配布、使用することができて便利です。

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

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

長野 透

長野 透

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説