EclipseでJava SWTアプリケーション作成

EclipseでSWTライブラリを用いたアプリケーションを作るためのセットアップ方法。

最新の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 PlatformRelease 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プラグインをインストールしたフォルダを指定」。

20080505-swt-groblib01.png

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を押すと関数のヘルプが見られるようになる。

20080505-swt-groblib02.png


3.Eclipseで、新規プロジェクト(Java)を作成

新規プロジェクト作成時に、追加するソースコードのパスやライブラリのファイル名を指定することもできるが、今回は、ここでは名にも指定せずに空のプロジェクトを作成する。

4.ソースコード・パスとライブラリの追加

画面左のPackageペインのプロジェクト名を右クリック

20080505-swt-packages.png
(この画面は、SWTライブラリが追加された後のもの」

表示されたコンテキストメニューの一番下、Propertiesをクリック

左側のリストの Java Build Path を選択。

※ ユーザライブラリの登録(2.)をしなかった場合は、
Sourceタブを選択し、Link Sourceボタンを押して、先ほど解凍した SWT ライブラリのパスを指定する。(指定すると、ソース・パス以下のすべてのファイルが、プロジェクトの bin ディレクトリにコピーされるようだ)

ソース・パスを設定した後の画面は次のとおり

20080505-swt-addsrc.png

※ ユーザライブラリを登録(2.)をした場合も、しなかった場合も、
Librariesタブを選択し、(ユーザライブラリを登録しなかった場合は) Add JARsボタンを押して、先ほど追加したSWTソースの中より、swt.jar を探して選択する。
(ユーザライブラリを登録している場合は) ライブラリの追加ボタンを押して、ユーザライブラリを追加する。

ライブラリでswt.jarを設定した後の画面は次のとおり

20080505-swt-addlib.png


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で実行

20080505-swt-exec.png

まあ、普通に実行できます。こんな形のウインドウが作成されます。

7.Jarパッケージの作成

EclipseのFileメニュー - Export メニューを実行。

出力形式を "JAR ファイル" とし、次の画面では出力するJARファイルのフルパスを指定し、最後の画面で、エントリポイント(main関数)があるクラスを指定する。(最後のは忘れやすい)

8.コマンドラインでの実行

最初に書いたように、エラーが出ます。JARファイルの内部(jar xvf [file] で解凍)を見ても、特に問題あるようには…

9.Eclipseでデバック実行して、起動オプションを探る

デバッグ中に、実行中のクラスのプロパティを見ると、起動オプションが表示される。

20080505-swt-debug.png

swt.jar のライブラリ・パスが、「classファイルと同一ディレクトリ」ではなく、「プロジェクトで設定しているライブラリ・パス」となっている。

カレント・ディレクトリにもswt.jarがあるので、そちらを指定することにすると、起動は次のように行えばよいことになる。

[root@localhost bin]# java -classpath ./:./swt.jar HelloJavaSwt

jar の場合は、jarファイル内部のMANIFEST.MFファイルを編集して解決することができる。詳細は → こちら

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