Eclipse の SWT を使ってちょっとした Windows アプリケーションを作成しました。
Eclipse 上から起動して正常に動作することが確認できたので、ビルドを行ってアプリケーションを配布形式にまとめました。
そして、早速実行してみたのですが...
以下のエラーが出ました。
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout
理由は簡単。
SWT のライブラリを配布していませんでした^^;
そこで、Eclipse で使用している SWT のライブラリを調べ、Eclipse の plugins ディレクトリにあるその jarファイル(org.eclipse.swt.win32.win32.x86_3.1.1.jar)を配布ファイルに含め、クラスパスにも追加しました。
すると、今度は以下のエラーが出ました。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3139 in java.library.path
swt-win32-3139 というのは swt-win32-3139.dll のことで、Windows 上で SWT の GUI を表示するための DLL だそうです。
で、これがどこにあるかというと...
SWT のライブラリ(org.eclipse.swt.win32.win32.x86_3.1.1.jar)の中に含まれているんですね。
ということで、org.eclipse.swt.win32.win32.x86_3.1.1.jar を解凍して swt-win32-3139.dll を取り出し、この dll をパスの通ったディレクトリに配置すると...
正常に Windowsアプリケーションが起動しました。