Java SWT アプリケーションの JAR パッケージ手法

Java SWTアプリケーションを作成し、「ユーザ配布用のJARファイル」を作ったところ、SWTライブラリが見つからないというエラーに遭遇。

解決手法1

swt.jar ライブラリの全ファイルを、作成するjarファイルに格納する。
(swt.jarをバラバラに分解して、再格納して配布するのが、ライセンス上問題にならないか心配…)

20080507-jar-org.png
オリジナルのjarファイル


20080507-jar-add.png
swt.jarライブラリを無理やり追加したjarファイル
(赤でかこった部分が、swt.jarからコピーしてきた部分)

ファイルの展開・圧縮は、Gnomeの書庫マネージャを使って行っている。
(Windowsの場合は、素直にコマンドラインのjarを使うしかないかな…)

解決手法2

jarファイルのMETA-INF/MANIFEST.MFファイルを書き換えて、クラスライブラリのパスを追加する。

META-INF/MANIFEST.MF

Manifest-Version: 1.0

Main-Class: HelloJavaSwt

Class-Path: ./ ./swt.jar

こうしておいて、同じフォルダに配布するjarファイルと、swt.jarを格納すればOK。

なお、jarファイルはEclipseのファイルメニューのエクスポートで作成したものを使っているが、コマンドラインで作成することも出来る。

[root@localhost test]# jar cvfm test1.jar MANIFEST.MF *.class
マニフェストが追加されました。
HelloJavaSwt.class を追加中です。(入 = 1188) (出 = 700)(41% 収縮されました)

jarファイルとマニフェストファイルの順序は、jarに与えるスイッチの fm というファイル順序に依存している。


参考にしたページ
Sun :  jar - Java ARchive ツール

jarでファイルをまとめる

jarファイルに外部ライブラリを含めたい


最近、どうも脱線ぎみです…
本来なら、携帯電話用MIDPでプログラムを作る納期が迫っているにもかかわらず…

(C) Copyright r271-635. クリエイティブ・コモンズ:表示・非営利・継承This page is published under Creative Commons BY-NC-SA license and others .