なぜ CLASS を JAR に変換するのですか?
バラバラの .class ファイルは配布や実行に不便です。JAR はすべてを 1 つのファイルにまとめ、マニフェストエントリを使用することで、クラスパスや個々のクラスファイルを管理する代わりに java -jar でアプリケーションを起動できるようにします。
CLASS から JAR への変換方法
jar (JDK) FREE
.class ファイルのあるディレクトリに移動し、jar cfe app.jar com.example.MainClass *.class を実行して実行可能な JAR を作成します。ライブラリ JAR を作成する場合は、e フラグとメインクラスの引数を省略します。
IntelliJ IDEA Community FREE
File > Project Structure > Artifacts に移動し、依存関係を含むモジュールから JAR を追加し、メインクラスを設定して、Build > Build Artifacts を実行します。
Eclipse IDE FREE
プロジェクトを右クリックし、Export > Java > Runnable JAR file を選択し、起動構成を選択して出力パスを設定し、Finish をクリックします。
これらの形式について
CLASS ファイルはコンパイルされた Java バイトコードであり、javac が .java ソースファイルから生成する出力です。実行するには Java (JDK) がインストールされている必要があり、«java MyClass» コマンドを使用します。コードの内容を確認するには、JD-GUI などのデコンパイラで開きます。CLASS…
.CLASS の詳細を開く →JAR ファイルは Java Archive(Java アーカイブ)の略で、コンパイル済みの Java バイトコード(.class ファイル)、リソース、およびマニフェストをまとめた ZIP バンドルです。実行可能な JAR を実行するには Java のインストール(OpenJDK/Temurin は無料)が必要で、その後ダブルクリックするか、ターミナルで java -jar…
.JAR の詳細を開く →品質と注意点
- JAR は ZIP アーカイブです。拡張子を
.zipに変更すれば、任意のアーカイブマネージャーで内容を確認できます。META-INF/MANIFEST.MFファイルが Java での処理方法を制御します。 - マニフェストに
Main-Class属性がないとjava -jar app.jarは失敗します。エントリポイントを設定するにはjar cfではなくjar cfeを使用してください。 - バイトコードは変更されません。JAR へのパッケージ化は純粋にアーカイブであり、
.classファイルを改変することはありません。
よくある質問
JAR を作成するには JRE と JDK のどちらが必要ですか?
jar コマンドは JRE ではなく JDK に付属しています。既存の JAR の中身を確認するにはどうすればよいですか?
jar tf app.jar を実行するか、.jar を .zip にリネームしてアーカイブマネージャーで開きます。画像や設定などのリソースファイルを JAR に追加できますか?
jar コマンドで .class ファイルと一緒にリストするか、IDE のアーティファクトビルダーを使用して含めることができます。