SWTを用いたプログラムを作成し、そのプログラムをjarにまとめ、外部からクラスローダーでそのjar内のクラスをロードし、実行。

をしたいのですが、実行する際、下記のエラーが出てしまいます。
SWTのライブラリがクラスパスにない、ということだと思うのですが、どのようにjarを作れば使っているライブラリごとjarを作れるでしょうか?
環境はEclipseを使っており、
エクスポート→実行可能JARファイル→生成されるJARに必須ライブラリーをパッケージ
という風にやっています。

Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Layout

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/03/24 17:46:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント60pt

この質問の趣旨って、SWT を導入して無い環境でも、自分が作った jar ファイルだけで、SWT を使ったアプリケーションを動かしたい、ということですよね?

これをやりたいなら、二つの課題をクリアしなきゃいけません。

  • jar ファイルの中に jar を格納することはできるが、その中に格納されてる class ファイルをロードするのは、標準の ClassLoader では無理

  • SWT は、実行するために swt.jar だけではなく、DLL (Windows の場合) が必要


前者をクリアするためには、そういう動作をする ClassLoader を自作するか、swt.jar の内容を展開して、

個々の class ファイルを jar に格納することが必要です。


後者は、java だけでは如何ともしがたいです。


アプリケーションを実行する環境に、SWT を導入して、swt.jar をクラスパスに指定することをお勧めします。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません