EclipseでSWTライブラリを用いたアプリケーションを作るためのセットアップ方法。
Eclipse 4.4時点での情報アップデート
2015年3月に、このページの末尾に情報追加した。
Eclipse 3.3時点での情報
最新のEclipse 3.3系では、SWTライブラリを使った開発がスムースに行える設定にはなっていない。(3.2までは、標準でSWTアプリケーションが開発できた)
SWTライブラリを使ったアプリケーションを実行しようとすると、SWTライブラリが発見できないため、次のようなエラーが出る。
[root@localhost bin]# java HelloJavaSwt
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
[root@localhost bin]# java -jar HelloJavaSWT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
LinuxとWindowsで共通の対処方法は…
1.SWTライブラリのプラグインをインストール
SWTライブラリのプラグインがインストールされていない場合、インストールする必要がある。(3.3系の”Eclipse IDE for Java Developers”ではインストールされていなかった)
※ インストールされているかどうかのチックは…
Linuxの場合は /usr/lib/eclipse/plugins 配下に swt ディレクトリがあるか確かめる
※ SWTライブラリのプラグインの入手
Eclipseのホームページ → DOWNLOADS → By Project → Eclipse Platform → Release Build: 3.3.2 とページをたどって行って、” SWT Binary and Source”の項目からWindowsやLinux用のパッケージをダウンロードする。
Windowsの場合は、swt-3.3.2-win32-win32-x86.zip
Linuxの場合は、swt-3.3.2-gtk-linux-x86.zip などをダウンロード。
Linuxの場合は、ファイルを解凍して /usr/lib/eclipse/plugins 以下にコピーする。(ディレクトリ名は、適当でよい)
2.ユーザライブラリの登録
この項目は必ずしもやる必要性はない。個別のプロジェクトごとにライブラリを参照させることも可能。その場合は、3.に進む。
Eclipseのウィンドウ メニュー → 設定 を開く。
Java → ビルド・パス → クラスパス変数を選択し、「新規」ボタンで新規のパス変数を定義する。「名前:SWT、パス:SWTプラグインをインストールしたフォルダを指定」。
Java → ビルド・パス → ユーザ・ライブラリを選択し、「新規」ボタンでライブラリ名「SWT」を登録。さらに、「JARファイルの追加」ボタンを押し、SWTプラグインフォルダにあるswt.jarファイルを追加。
ここからはオプションだが、ユーザ・ライブラリで追加された項目を開いて、Javadocに”http://download.eclipse.org/eclipse/downloads/documentation/2.0/html/plugins/org.eclipse.platform.doc.isv/reference/api/”を設定すると、編集中に関数の上でShift-F2を押すと関数のヘルプが見られるようになる。
3.Eclipseで、新規プロジェクト(Java)を作成
新規プロジェクト作成時に、追加するソースコードのパスやライブラリのファイル名を指定することもできるが、今回は、ここでは名にも指定せずに空のプロジェクトを作成する。
4.ソースコード・パスとライブラリの追加
画面左のPackageペインのプロジェクト名を右クリック
(この画面は、SWTライブラリが追加された後のもの」
表示されたコンテキストメニューの一番下、Propertiesをクリック
左側のリストの Java Build Path を選択。
※ ユーザライブラリの登録(2.)をしなかった場合は、
Sourceタブを選択し、Link Sourceボタンを押して、先ほど解凍した SWT ライブラリのパスを指定する。(指定すると、ソース・パス以下のすべてのファイルが、プロジェクトの bin ディレクトリにコピーされるようだ)
ソース・パスを設定した後の画面は次のとおり
※ ユーザライブラリを登録(2.)をした場合も、しなかった場合も、
Librariesタブを選択し、(ユーザライブラリを登録しなかった場合は) Add JARsボタンを押して、先ほど追加したSWTソースの中より、swt.jar を探して選択する。
(ユーザライブラリを登録している場合は) ライブラリの追加ボタンを押して、ユーザライブラリを追加する。
ライブラリでswt.jarを設定した後の画面は次のとおり
5.Eclipseでソースコードを作成
Fileメニュー - New - Class で新規クラスを追加する。
クラス名は適当に付け、"public static void main(String args[])" のチェックボックスにチェックを付けて実行する。
入力するソースコードは次のとおり
// SWTライブラリのインポート
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class HelloJavaSwt {
public static void main(String[] args) {
// TODO Auto-generated method stub
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Java SWT Window"); // ウインドウのタイトル
shell.setSize(320, 200); // ウインドウのサイズ
// ラベルの定義
Label label = new Label(shell, SWT.NULL);
label.setText("Hello SWT");
label.setBounds(0, 0, 200, 50); // 表示位置 x=0, y=0, サイズ 200x50
shell.open();
// ウィンドウが破棄されるまでループ
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
6.Eclipseで実行
まあ、普通に実行できます。こんな形のウインドウが作成されます。
7.Jarパッケージの作成
EclipseのFileメニュー - Export メニューを実行。
出力形式を "JAR ファイル" とし、次の画面では出力するJARファイルのフルパスを指定し、最後の画面で、エントリポイント(main関数)があるクラスを指定する。(最後のは忘れやすい)
8.コマンドラインでの実行
最初に書いたように、エラーが出ます。JARファイルの内部(jar xvf [file] で解凍)を見ても、特に問題あるようには…
9.Eclipseでデバック実行して、起動オプションを探る
デバッグ中に、実行中のクラスのプロパティを見ると、起動オプションが表示される。
swt.jar のライブラリ・パスが、「classファイルと同一ディレクトリ」ではなく、「プロジェクトで設定しているライブラリ・パス」となっている。
カレント・ディレクトリにもswt.jarがあるので、そちらを指定することにすると、起動は次のように行えばよいことになる。
[root@localhost bin]# java -classpath ./:./swt.jar HelloJavaSwt
jar の場合は、jarファイル内部のMANIFEST.MFファイルを編集して解決することができる。詳細は → こちら
Eclipse 4.4時点での情報
Eclipse 4.4時点でもSWTライブラリは標準では読み込まれないので、次の方法で手動で追加およびjarへのエクスポートをする必要がある。
SWTライブラリの入手
Eclipse SWT公式配布ページ『SWT: The Standard Widget Toolkit』から、開発環境(実行環境)にあったライブラリをダウンロードし、適当な場所に展開する。
今回は、/usr/local/eclipse/plugins
ディレクトリにswt
サブディレクトリを作成し、そこにライブラリ一式を展開した。展開されたファイルは次のようなものだ。
$ ls -lF /usr/local/eclipse/plugins/swt/ -rw-r--r-- 1 root users 18732 2014-02-21_17:28:26 about.html drwxr-xr-x 2 root users 4096 2014-02-21_17:28:26 about_files/ -rw-r--r-- 1 root users 2026054 2014-02-21_17:28:24 src.zip -rw-r--r-- 1 root users 2342965 2014-02-21_17:27:42 swt-debug.jar -rw-r--r-- 1 root users 1728296 2014-02-21_17:28:12 swt.jar
プロジェクトにswtライブラリとjavadocを設定
プロジェクトのプロパティを開き、『Javaのビルド・パス』にてSWTのjarファイルと、javadocのzipファイルを登録する。まず、『外部jar追加』で先ほど展開したswt.jarファイルを追加する。
さらに、追加されたswt.jarのプロパテイを開いて『ソース添付』に先ほど展開したソースコード src.zip を指定する。ソース添付すると、エディタでjavadocが表示されるほか、コードアシスト(自動補完)も受けることができる。
SWTライブラリを含んだjarを作成する
プログラムの開発が完了したら、SWTライブラリを含んだjarファイルを作成する。ファイル・メニューのエクスポートを選択して、『実行可能jarファイル』のエクスポートを選択する
さらに、次の画面で『生成されるjarに必須ライブラリをパッケージ』を選択すれば、SWTライブラリもjarファイルに含まれることになる。(『隣のサブフォルダーに必須ライブラリをコピー』を選択すれば、外部ライブラリを別ファイルに保存してくれるため、LinuxからWindowsなどクロスコンパイル時にライブラリ差し替えに便利だ)