実行可能なjar

jarファイルをダブルクリックするだけでJavaアプリケーションを起動させるための方法。
必要な物はjarファイル内にMETA-INF/MANIFEST.MFというファイルを用意するだけ。
例えばこんな感じ。

Manifest-Version: 1.0
Main-class: tv.kazu.sample.jar.AppMain

あとはjarファイルをダブルクリックすればAppMainが実行される。
基本的な情報はきしださんのこのページとかを参考に。
さて、Javaで開発をしててclasspath関係で一度も悩んだこと無い人はいないと思う。
では上記のAppMainが他のjarファイル(以下外部jarファイルと呼ぶ)に依存しているとする。JDBCドライバーだったりLog4jだったり。その場合にはどういう解決方法があるだろうか。


結論から言うと3つ

  1. Manifest.cfにclasspathを相対パスで記述し、外部jarファイルを先ほど作成した実行可能なjarファイルからの正しい相対パスの場所に置く
  2. 外部jarファイルを解凍して、外部jarファイルに含まれていたclassファイルを実行可能jarファイルに含める
  3. lib/extディレクトリに外部jarファイルを入れる

オススメは1番かなぁ。自作の実行可能jarファイルとライブラリ等の外部jarファイルをユーザーを一つのディレクトリに入れて、そのディレクトリをまとめてユーザーに配布。
ここの675に書いてあるように、実行可能jarファイルの中に外部jarファイルを(classファイルに解凍せずに)そのまま含めて、それを参照させることはできないっぽい。
Java House MLにもこれに関係する投稿が。
しかし、結論に辿り着くまでに結構時間がかかった。Googleで検索してる時に、自分以外にも悪戦苦闘してる人が結構いたので(この人とか)、まとめてみた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です