JAvaがjarパッケージを生成する方法

3163 ワード

この例ではjavaがjarパケットを生成する方法を説明し,非常に実用的なテクニックである.皆さんの参考にしてください.具体的な分析は以下の通りである.
多くのJava初心者は、Javaが作成したアプリケーションプログラムが最終的にexeのような実行可能なファイルを形成できるかどうか、コマンドラインでしか実行できないのかと疑問に思っています.
通常、実行可能なJARファイルパッケージを作成し、.chmドキュメントのようにダブルクリックして実行できる2つの方法があります.もう1つはJETを使用してコンパイルします.しかしJETはお金で買うし、JETもすべてのJavaプログラムを実行ファイルにコンパイルできるわけではなく、性能も少し割引されるそうです.したがって、実行可能なJARファイルパッケージを作成する方法が最適であり、Javaのプラットフォーム間特性を維持することができます.
次に、JARパッケージとは何かを見てみましょう.
1.JARパッケージ
JARファイルはJava Archive Fileであり、その応用はJavaと密接に関係しており、Javaのドキュメント形式である.JARファイルは非常にZIPファイルに似ています.正確にはZIPファイルなので、パッケージと呼ばれています.JARファイルとZIPファイルの唯一の違いは、JARファイルの内容にMETA-INF/MANIFEST.MFファイルが含まれていることであり、このファイルはJARファイルを生成する際に自動的に作成される.例えば、以下のディレクトリ構造のいくつかのファイルを持っている場合:==--test--Test.classはそれをZIPファイルtest.zipに圧縮し、このZIPファイルの内部ディレクトリ構造は:test.zip`--test`--Test.class
JDKのjarコマンドを使用してJARパッケージtest.jarを作成すると、このJARファイルの内部ディレクトリ構造は、test.jar|--META-INF|`--MANIFEST.MF`--test`--Test.classとなります.
2.実行可能なJARファイルパッケージの作成
実行可能なJARファイルパッケージを作成してプログラムを公開するのがJARファイルパッケージの最も典型的な使い方です.
Javaプログラムはいくつかの.classファイルから構成されています.これらの.classファイルは、それらが属するパッケージによって階層化されてディレクトリに保存されなければならない.実行前に使用するすべてのパッケージのルートディレクトリをCLASSSPATH環境変数またはjavaコマンドの-cpパラメータに指定する必要があります.実行時にはコンソールに下りてjavaコマンドを使用して実行し、Windowsを書かなければならないバッチファイル(.bat)またはLinuxを直接ダブルクリックして実行する必要がある場合はShellプログラムを実行します.そのため、Javaは開発者がユーザーを苦しめるのに便利なプログラム設計言語だと多くの人が言っています.
そうではなく、開発者が実行可能なJARファイルパッケージを作成してユーザーに渡すことができれば、ユーザーが使いやすくなります.WindowsでJRE(Java Runtime Environment)をインストールすると、インストールファイルがjavaw.exeに.jarファイルをマッピングして開きます.では、実行可能なJARファイルパッケージでは、ユーザーがダブルクリックするだけでプログラムを実行できます..chmドキュメントを読むのと同じように便利です(.chmドキュメントのデフォルトはhh.exeによって開かれています).では、今のポイントは、この実行可能なJARファイルパッケージを作成する方法です.
実行可能なJARファイルパッケージを作成するには、cvfmパラメータ付きjarコマンドを使用する必要があります.同様に、上記のtestディレクトリを例にとると、コマンドは次のようになります.

jar cvfm test.jar manifest.mf test 


ここでtest.jarとmanifest.mfの2つのファイルは、それぞれ対応するパラメータfとmであり、そのメインイベントはmanifest.mfである.実行可能なJARファイルパッケージを作成するには、1つのmanifest.mfファイルを指定するだけでは十分ではありません.MANIFESTはJARファイルパッケージの特徴であり、実行可能なJARファイルパッケージと実行不可能なJARファイルパッケージにはMANIFESTが含まれています.重要なのは、Main-Classの1つを含むJARパッケージを実行できるMANIFESTです.これはMANIFESTで次のように書かれています.

Main-Class:        (    ) 


たとえば、上記の例のTest.classがtestパッケージに属し、実行可能なクラス(public static void main(String[])メソッドが定義されている)であると仮定すると、このmanifest.mfは次のように編集できます.

Main-Class: test.Test  


このmanifest.mfは、任意の場所に置くこともできるし、他のファイル名であってもよい.Main-Class:test.Testの行が必要であり、その行は1つのリターン記号で終了すればよい.manifest.mfファイルを作成すると、ディレクトリ構造が==|--test|`--Test.class`--manifest.mfに変わります.
この場合、testディレクトリの親ディレクトリにjarコマンドを使用してJARファイルパッケージを作成する必要があります.つまり、ディレクトリツリーで「==」で表されるディレクトリでは、次のコマンドが使用されます.

jar cvfm test.jar manifest.mf test 


その後"=="ディレクトリにtest.jarが作成され、このtest.jarが実行されるJARファイルパッケージです.実行時にjava-jar test.jarコマンドを使用するだけです.
なお、作成したJARファイルパッケージには、前例のようにJavaプログラムのパッケージ構造に対応する完全なディレクトリ構造が含まれている必要があります.Main-Classが指定したクラスも、前例のtest.Testのようなパッケージパスを含む完全なクラス名でなければなりません.また、このクラスは、Java test.Testが上記の例で正しく動作するようにJavaを使用してJARパッケージに作成されない前に実行できます(もちろんCLASSSPATHが正しい場合).
本文で述べたJavaプログラムの設計に役立つことを願っています.