JavaのプログラムをEclipseから実行した場合とExecutableJarにして実行した場合の挙動の違いについて質問です。Eclipse側ではビルドパスに、ExecutableJar側ではMANIFEST.MFのClass-Pathに、同一の外部Jarファイルへの参照が記述してあります。しかしExecutableJarを実行した場合のみ、Jythonスクリプト中からその外部Jarファイル内のクラスをインポートする部分でエラーを起こします。なおどちらの場合でも、Javaコード中でのインポートは正常に行われています。いったい何が原因でこんな現象が起こるのだと思いますか?

回答の条件
  • 1人2回まで
  • 登録:2006/09/23 22:06:06
  • 終了:2006/09/30 22:10:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/09/23 23:18:51

ポイント35pt

Eclipse で実行する際に別 VM で起動する設定にしない場合 Eclipse 本体と同じ環境で実行されます。

Eclipse 本体に含まれる Jar ファイルを使用してコンパイルされ、バージョンの不一致によるエラーが発生しているのではないかと思いますが、エラーの詳細が分からないので推測になります。

id:westfish

あまり参考にならないかも知れませんが一応エラーの詳細を載せます。

from org.eclipse.swt import SWT

というコードの部分で

ImportError: No module named eclipse

というエラーを起こしています。

Eclipseが使っているJREは1.5.0_05で、ExecutableJarを実行するときに使っているJREは1.5.0_07でした。試しに1.5.0_05のjava.exeを指定して起動してみましたが、結果は変わりませんでした。

2006/09/23 23:56:02
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/09/24 00:25:11

ポイント35pt

SWT のランタイムがロードできていないように見えます。

実行環境に対応したランタイムにパスは通していますか?

http://www13.plala.or.jp/observe/swt/swt_overview.html#launch

id:westfish

はい。なぜならJavaコード側でもorg.eclipse.swtを利用しており、それは問題なく動いているからです。現在は対症療法としてJython側でインポートをせず、Java側からJython側の名前空間に"SWT"という名前でSWT.classをセットして使っています。これで問題なく動くのでクラスパスなどの問題ではないと考えられます。

2006/09/24 01:04:45

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません