icon
icon

JavaのJar(ジャー)拡張子の使い方【初心者向け】

初心者向けにJavaのJar(ジャー)拡張子の使い方について解説しています。これはJava ARchiveの略で、圧縮ファイルのひとつです。jarファイルの作成、展開方法といった基本の操作について学びましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

JavaのJar(ジャー)拡張子の使い方について解説します。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
 

なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Jar(ジャー)拡張子の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Jar(ジャー)拡張子とは

JARは「Java ARchive」の略で、Javaプログラムの配布形式のひとつです。

classファイルやリソースファイルなどが、ZIP形式でひとつのファイルにまとめられています。

Javaの開発では、有志が公開・メンテナンスしている様々なオープンソースライブラリを利用する場面が多くあります。それらライブラリはJARファイルで提供されていることがほとんどです。

 

Jar(ジャー)拡張子の使い方

JavaではJARファイルを操作するために「jar」という名前のコマンドが用意されています。もしあなたがOracleのサイトからJDKをダウンロード・インストールしたのであれば、すでに「jar」コマンドが利用可能な状態になっているはずです。

試しに「コマンドプロンプト」を開き、次のコマンドを実行してみましょう。

(Macの場合は「ターミナル」を開いて実行しましょう)

jar --help

次のような、使い方が表示されるでしょう。

(Javaバージョンや環境などにより、実際の出力と異なる場合があります)

使用方法: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
jarはクラスおよびリソースのアーカイブを作成し、アーカイブから個々のクラスまたは
リソースを操作または復元できます。

 例:
 # 2つのクラス・ファイルを含むclasses.jarというアーカイブを作成する:
 jar --create --file classes.jar Foo.class Bar.class
 # foo/のすべてのファイルを含む、既存のマニフェストを使用したアーカイブを作成する:
 jar --create --file classes.jar --manifest mymanifest -C foo/ .
 # モジュラjarアーカイブを作成する。モジュール・ディスクリプタはclasses/module-info.classに
 # ある:
 jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0
	 -C foo/ classes resources
 # 既存の非モジュラjarをモジュラjarに更新する:
 jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0
	 -C foo/ module-info.class
 # 複数リリースjarを作成し、一部のファイルをMETA-INF/versions/9ディレクトリに配置する:
 jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes

jarコマンドを短縮または簡略化するには、個別のテキスト・ファイルで引数を指定し、
記号(@)を接頭辞として使用してjarコマンドに渡します。

 例:
 # 追加オプションおよびクラス・ファイルのリストをファイルclasses.listから読込みます
 jar --create --file my.jar @classes.list


 メイン操作モード:

  -c、--create               アーカイブを作成します
  -i,、--generate-index=FILE  指定のjarアーカイブの索引情報を
							 生成します
  -t、--list                 アーカイブの内容を一覧表示します
  -u、--update               既存のjarアーカイブを更新します
  -x、--extract              指定の(またはすべての)ファイルをアーカイブから抽出します
  -d, --describe-module      モジュール・ディスクリプタまたは自動モジュール名を出力します

 どのモードでも有効な操作修飾子:

  -C DIR                     指定のディレクトリに変更し、次のファイルを
							 取り込みます
  -f、--file=FILE            アーカイブ・ファイル名。省略した場合、stdinまたは
							 stdoutのいずれかが操作に基づいて使用されます
	  --release VERSION      次のすべてのファイルをjarのバージョニングされたディレクトリ
							 (つまり、META-INF/versions/VERSION/)に配置します
  -v、--verbose              標準出力に詳細な出力を生成します

 作成または更新モードでのみ有効な操作修飾子:

  -e、--main-class=CLASSNAME モジュラまたは実行可能なjarアーカイブに
							 バンドルされたスタンドアロン・アプリケーションの
							 アプリケーション・エントリ・ポイント
  -m、--manifest=FILE        指定のマニフェスト・ファイルからマニフェスト情報を
							 取り込みます
  -M、--no-manifest          エントリのマニフェスト・ファイルを作成しません
	  --module-version=VERSION    モジュラjarの作成時または非モジュラjarの更新時の
							 モジュール・バージョン
	  --hash-modules=PATTERN モジュラjarの作成時または非モジュラjarの更新時に
							 指定のパターンに一致し、直接または間接的に
							 依存しているモジュールのハッシュを
							 計算および記録します
  -p、--module-path          ハッシュを生成するモジュール依存性
							 の場所

 作成、更新および索引生成モードでのみ有効な操作修飾子:

  -0, --no-compress          格納のみ。ZIP圧縮を使用しません

 その他のオプション:

  -h、--help[:compat]        これ(オプションで互換性)をhelpに指定します
	  --help-extra           追加オプションのヘルプを提供します
	  --version              プログラム・バージョンを出力します

 モジュール・ディスクリプタ'module-info.class'が指定のディレクトリのルートまたは
 jarアーカイブ自体のルートにある場合、アーカイブはモジュラjarです。
 次の操作は、モジュラjarの作成時または既存の非モジュラjarの更新時に
 のみ有効です:  '--module-version'、
 '--hash-modules'および'--module-path'。

 ロング・オプションへの必須またはオプションの引数は、対応するショート・オプション
 に対しても必須またはオプションになります。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

Jar(ジャー)拡張子の例、方法など

「jar」コマンドの基本的な使い方である以下2点を紹介します。

  1. jarファイルを作成する
  2. jarファイルを展開する

1. jarファイルを作成する

次のコマンドを実行すると、カレントフォルダに「sample.jar」を作成することができます。

jar cvf sample.jar -C {classファイルなどがあるフォルダ} .

たとえば、/javaproject/target 配下にあるclassファイルやリソースファイルを含めたjarファイルを作成する場合は以下です。

jar cvf sample.jar -C /javaproject/target .

 

2. jarファイルを展開する

次のコマンドを実行すると、sample.jarファイルをカレントフォルダに展開します。

jar xvf sample.jar

試しに次のリンクからダウンロードしたファイルに含まれる「commons-lang3-x.x.x.jar」を展開してみましょう。

Apache Commons Lang

なお、「x」にはバージョンを表す番号が入ります。

バージョン3.8.1の場合は以下のようになります。

jar xvf commons-lang3-3.8.1.jar

 

監修してくれたメンター

青柳哲夫

独立系SIerやベンチャーを経て、現在はフリーランスエンジニアとして活動しています。

PHPやJava・Rubyでの業務系Webアプリケーション開発が得意です。
TechAcademyではJavaコース・ブロックチェーンコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でもJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する