- PR -

SWTでWindowsアプリケーションをつくりたい

投稿者投稿内容
ken
会議室デビュー日: 2006/10/07
投稿数: 1
投稿日時: 2006-10-07 11:21
こんにちは、私初心者ですが、是非ご指導を宜しくお願いします。
Eclipseで簡易のブラウザーを作ったのですが、
それをJARファイルにまとめて、ダブルクリックしても、

could not find the main class. Program will exit
という表示が出てしまいます。
また、コマンドプロンプトで、 

C:\>java -jar miniBrowser.jar と入力すると、

Exception in thread "main" java.lang.NoClassDefFoundError
: org/eclipse/swt/widge

といったエラーになります。どなたかご回答を宜しく。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-10-08 02:02
SWTのクラスがクラスパスに存在しないからです。
設定方法はJAR ファイルの仕様のメイン属性Class-Pathの欄に書いてあります。

この設定値ではJARファイルからの相対パスを指定する事になります。
flakwing
会議室デビュー日: 2006/07/21
投稿数: 7
投稿日時: 2006-10-08 09:14
JARファイル作成時にメインクラスを指定していない可能性もあります。
JAR作成をEclipseのエクスポート・ウィザードでやっているのであれば、
次へボタンを最後まで押したページで指定することが出来ます。
ken
会議室デビュー日: 2006/10/08
投稿数: 4
投稿日時: 2006-10-08 14:28
[quote]
あしゅさんの書き込み
SWTのクラスがクラスパスに存在しないからです。
設定方法は[url=http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/jar.html#Manifest%20Specification]JAR ファイルの仕様[/url]のメイン属性Class-Pathの欄に書いてあります。

この設定値ではJARファイルからの相対パスを指定する事になります。
[/quote]
JARをeclipseで作成する際、マニフェストを以下のように作成しました。

------------------------
Manifest-Version: 1.0
Main-Class: miniBrowser2
Class-Path: ./swt.jar ./rt.jar ./jsse.jar ./jce.jar ./charsets.jar
 ./dnsns.jar ./localedata.jar ./sunjce_provider.jar ./sunpkcs11.jar
./org.eclipse.swt.win32.win32.x86_3.1.1.jar
------------------------
ken
会議室デビュー日: 2006/10/08
投稿数: 4
投稿日時: 2006-10-08 14:34
[上文続き] しかし、結果は変わりません。

Exception in thread "main" java.lang.NoClassDefFoundError
: org/eclipse/swt/widgets/composite     となります。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-10-08 15:18
引用:

kenさんの書き込み (2006-10-08 14:34) より:
Exception in thread "main" java.lang.NoClassDefFoundError
: org/eclipse/swt/widgets/composite     となります。


一旦、
java -classpath miniBrowser.jar foo.Bar
のように main のクラス名を指定する起動方法で試してみてはどうでしょうか。
(上記例は foo パッケージの Bar クラスに main がある場合。)

また、今は main メソッドすら見つかっていない段階ですので、SWT をまったく使わないで HelloWorld だけ println するような jar を作ってうまく動くかどうかを確認し直しされたほうが良いと思います。

#以下、あとで追加。

引用個所を間違えました。
引用:

kenさんの書き込み (2006-10-07 11:21) より:
Eclipseで簡易のブラウザーを作ったのですが、
それをJARファイルにまとめて、ダブルクリックしても、

could not find the main class. Program will exit
という表示が出てしまいます。


の部分を引用したかったのです(main クラスと、NoClassDefFoundError で表示される main スレッドとを勘違いしていました)。
でもこれって NoClassDefFoundError とは意味が違いますよね。エラーメッセージの意味が、試さないと分からなくなってきました。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

[ メッセージ編集済み 編集者: unibon 編集日時 2006-10-08 17:20 ]
加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2006-10-09 00:20
引用:

kenさんの書き込み (2006-10-07 11:21) より:

C:>java -jar miniBrowser.jar と入力すると、

Exception in thread "main" java.lang.NoClassDefFoundError
: org/eclipse/swt/widge




確かにSWTは面倒ですね。クラスがたくさん必要で。
私のお勧めはjsmooth下なんかで実行ファイルとしてしまう方法です。

まぁ、結局は。

jara -cp swt.jar;org.eclipse.core.runtime_3.1.1.jar minibrowser.jar foo.Bar

とやるのと一緒ですけど。

ken
会議室デビュー日: 2006/10/08
投稿数: 4
投稿日時: 2006-10-09 12:14
eclipseの[実行]-[Javaアプリケーション]
で実行した場合はうまくいくんですが、
それをJARにするやり方が、いまいちわからないです。

スキルアップ/キャリアアップ(JOB@IT)